我需要知道如何讀取字符串並將其拆分爲兩部分,如下例所示。如何讀取由c:中的「:」分隔的兩個字符串
我有這個字符串的文件@amanda:@bruna,但我不能讀成單獨的單詞,並在兩個diferent變量這樣每個店:
char userA[20];
char userB[20];
scanf("%s:%s", userA, userB);
你能幫助我嗎?
我需要知道如何讀取字符串並將其拆分爲兩部分,如下例所示。如何讀取由c:中的「:」分隔的兩個字符串
我有這個字符串的文件@amanda:@bruna,但我不能讀成單獨的單詞,並在兩個diferent變量這樣每個店:
char userA[20];
char userB[20];
scanf("%s:%s", userA, userB);
你能幫助我嗎?
使用掃描集,以防止第一%s
消耗整條生產線,作爲%s
只會停止食用,當它遇到的空白:
if (scanf("%19[^:]:%19s", userA, userB) == 2)
{
/* 'userA' and 'userB' have been successfully assigned. */
}
其中%19[^:]
意味着閱讀最多19個字符,但停止當遇到冒號。指定寬度預先設置緩衝區溢出。始終檢查scanf()
的結果,該結果返回分配的數量,以確保後續代碼不處理過時的或未初始化的變量。
謝謝,你幫了我很多 – user1769712 2013-02-28 21:01:58
@ user1769712,沒問題。我瞭解了有關stackoverflow的掃描集也非常有用(這兩個掃描集和SO!)。 – hmjd 2013-02-28 21:02:56
char buf[60];
char userA[20];
char userB[20];
char *ptr;
scanf("%s", buf);
ptr = strchr(buf, ':');
if (ptr == NULL)
{
// whatever you want to do if there's no ':'
}
*ptr = 0;
strcpy(userA, buf);
strpcy(userB, ptr + 1);
謝謝,我會試試這個方式 – user1769712 2013-02-28 21:04:14
有沒有必要使用scanf
。 (事實上,除大學課程外,scanf
幾乎沒有目的)。只讀數據:
int main(void)
{
char line[ 80 ];
char *userA, *userB;
fgets(line, sizeof line, stdin); /* Need to check that a full line was read */
userA = line;
userB = strchr(line, ':'); /* Need to check that the input contains a colon */
*userB++ = '\0';
http://www.cplusplus.com/reference/cstdio/scanf/'%s'讀取任意數量的非空白字符,其中':'絕對不是。 – 2013-02-28 20:52:13