我想分割一行使用strtok其中有選項卡分隔符。我的代碼和輸入如下。我想將這些標記存儲到field1,field2,field3中。使用strtok函數刪除Tab空間
代碼:
while(fgets(line,80,fp1)!=NULL) //Reading each line from file to calculate the file size.
{
field1=strtok(line," ");
//field1=strtok(NULL,"");
field2=strtok(NULL," ");
field3=strtok(NULL," ");
if(flag != 0)
printf("%s",field1);
flag++;
}
輸入:
315 316 0.013
315 317 0.022
316 317 0.028
316 318 0.113
316 319 0.133
318 319 0.051
320 324 0.054
321 322 0.054
我的電流輸出:(如果我打印字段1)
315 316 0.013
315 317 0.022
316 317 0.028
316 318 0.113
316 319 0.133
318 319 0.051
320 324 0.054
321 322 0.054
爲了避免潛在的緩衝區溢出,您應該定義'field1'和朋友與同尺寸的'line'或通過長度說明符是這樣的:'sscanf的(行,「%31S 31S%31S%」, field1,field2,field3);'。您還應該檢查'sscanf()'的返回值,以避免將未初始化的數據傳遞給'printf()'。 – chqrlie