[英]How to parse a line into different variables in C?
我有一個簡單的文件,其中包含要讀取的整數和字符。 我逐行讀取並將它們存儲在 char 數組中,然后使用 strtok() 從空格中拆分並使用 atoi() 轉換為 int 變量,但我無法將單個字符提取到 char 變量中。[![輸入圖片說明][1]][1]
對於初學者,此代碼段
fgets(line,255,file);
while (fgets(line,255,file))
{
splitLine(line, 255);
fgets(line,255,file);
splitLine(line, 255);
}
是不安全的,因為您不檢查每次調用fgets
的結果。
函數splitLine
的第二個參數是多余的,因為第一個傳遞的參數代表一個字符串
所以像這樣聲明函數
void splitLine( const char line[] );
在函數中,最好使用sscanf
而不是strtok
。 此外,對於一個字符符號調用atoi
沒有意義
array[count]=atoi(ptr);
該功能可以如下所示
void splitLine( const char line[] )
{
int rowLength;
int columnLength;
char character;
if ( sscanf( line, "%d %d %c", &rowLength, &columnLength, &character ) == 3 )
{
printf("%d,",rowLength);
printf("%d,",columnLength);
printf("%c\n",character);
}
//...
}
你為每一列做不同的事情,那么為什么要使用數組呢?
char *ptr=strtok(line, " ");
for (count=0; i < 3; i++) {
if (ptr == NULL)
break;
switch(count) {
case 0:
rowlength = atoi(ptr);
break;
case 1:
columnLength = atoi(ptr);
break;
case 2:
character = *ptr;
break;
}
ptr=strtok(NULL, " ");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.