簡體   English   中英

如何將一行解析為C中的不同變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM