[英]Parsing a C string and storing parts of the string in variables
這篇文章可能被標記為重復,但我確實在網上搜索了這個特定案例,但我找不到任何類似的例子。 以下是我的代碼的簡化版本。
我將以下數據行存儲在名為test.txt
的文本文件中:
12345|This is a sentence|More words here
24792|This is another sentence|More words here again
test.txt
文件中的文本將始終遵循<int>|<string>|<string>
的格式
我現在想存儲由分隔符|
分隔的每個部分在一個變量中。
以下是我的嘗試:
uint32_t num;
char* str1, str2;
// the data variable is a char pointer to a single line retrieved from test.txt
sscanf(data, "%d|%s|%s", &num, str1, str2);
上面的代碼將檢索num
的正確值,但會將第二節中的第一個單詞插入str1
,將變量str2
保留為 null。 據我了解,之所以如此,是因為sscanf()
function 在遇到空格時會停止。
是否有將每個部分存儲到變量中的有效方法?
如您所述, %s
使用空格作為分隔符。 使用|
作為分隔符,使用%[^|]
。 這匹配任何不包括|
的字符序列 .
而且由於num
是無符號的,你應該使用%u
,而不是%d
。
sscanf(data, "%u|%[^|]|%[^|]", &num, str1, str2);
不要忘記為str1
和str2
分配memory指向; scanf()
不會自動執行此操作。
您的變量聲明也是錯誤的。 它需要是:
char *str1, *str2;
您的聲明相當於:
char *str1;
char str2;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.