繁体   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