我正在尝试读入具有不同类型的文件(整数,字符)。这是相对简单的,但我对使用哪种方法读取这些不同的值感到困惑。
我正在使用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
数组?
else
{
while(line[++index] != '\0')
{
if(line[index] == ' ')
{
printf("%c", '.');
}
else if(line[index] == 'X')
{
printf("%c", '*');
}
}
}
输出;
*第一次飞行
....... *第二次飞行
答案 0 :(得分:3)
scanf(line, " %c", &ch)
/* ^ */
百分之前的空格将导致scanf
忽略所有空格字符(空格,制表符,换行符)(如果存在)。
即。条件if(ch == ' ')
将始终为false
。
在你的问题中,这不是你喜欢的东西,所以删除这个空格。
修改强> 同样由Barak Manos
建议我认为对于第二行,您需要扫描
"%d, %d"
而不是"%d%d"
。