gpt4 book ai didi

c - 从文件中读取 C 中的不同类型

转载 作者:太空狗 更新时间:2023-10-29 15:35:18 24 4
gpt4 key购买 nike

我正在尝试读入一个具有不同类型(整数、字符)的文件。这相对简单,但我对使用哪种方法来读取这些不同的值感到困惑。

我正在使用 fgets 来确保文件不在末尾,即;

char line[MAX_CHARS]; 
char ch;
FILE *infile = fopen("file.txt", "r");
const int MAX_CHARS = 50;

while(fgets(line, MAX_CHARS, infile) != NULL)

给定输入;

-Flight one

83, 34

X XX X

X X

-Flight two

....

我想打印以破折号开头的行,将整数发送到方法,然后打印 X 和空格。所以,我的代码是:

if(line[0] == '-')
{
printf("%s\n", line);
}

else if(2==sscanf(line, "%d%d", &long, &lat))
{
coordinates(long, lat);
}

我使用 scanf 尝试读取 X 和空格,但它根本不起作用。 getchar() 似乎也不起作用,所以我应该重新开始,而不是单独读取每个 char 而不是 char 数组吗?

编辑:所以我按照某人的建议做了,这是我更新的代码,用于读取空格和 X,但它显然不正确,因为它不会进入 X 的下一行。

        else
{
while(line[++index] != '\0')
{
if(line[index] == ' ')
{
printf("%c", '.');
}

else if(line[index] == 'X')
{
printf("%c", '*');

}
}
}

用于输出;

*Flight one

.......*Flight two

最佳答案

scanf(line, " %c", &ch)
/* ^ */

百分比之前的空格将导致 scanf 忽略所有存在的空白字符(空格、制表符、换行符)。

即条件 if(ch == ' ') 将始终为 false

在您的问题中,这不是您喜欢的内容,因此请删除此空格。

编辑也按照 Barak Manos 的建议

I think that for the second line you need to scan "%d, %d" instead of "%d%d".

关于c - 从文件中读取 C 中的不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com