我有這個程式應該讀取一行,例如post "nice job" john,我想獲取該行中的每個標記,但由于某種原因,我只獲取其中的一些。
預期輸出:
post
nice job
john
我的輸出:
post
nice
我確定我將正確的格式放在 sscanf 上,所以有什么問題我不明白為什么它不將“好作業”視為一個詞。
程式:
#include <stdio.h>
int main()
{
char token1[128];
char token2[128];
char token3[128];
char str[] = "post \"nice job\" john";
sscanf(str,"%s \"%s\" %s",token1,token2,token3);
puts(token1);
puts(token2);
puts(token3);
return(0);
}
uj5u.com熱心網友回復:
第二個%s讀取"nice"是因為%s在第一個空格處停止。然后格式字串要求匹配"引號,這不是下一個(下一個是空格)。在scanf找到匹配項之前,這些函式不會跳過輸入,它們會停止。始終檢查應該是的回傳值3。
這段代碼
#include <stdio.h>
int main()
{
char token1[128] = "";
char token2[128] = "";
char token3[128] = "";
char str[] = "post \"nice job\" john";
int res = sscanf(str, "%s \"%[^\"]\"%s", token1, token2, token3);
printf("%d\n", res);
puts(token1);
puts(token2);
puts(token3);
return(0);
}
輸出
3
post
nice job
john
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396856.html
上一篇:使用特定格式決議C 中的字串
