用fscanf或fgets忽略空格?

时间:2012-11-09 21:29:50

标签: c fgets scanf

我想知道是否有办法用fscanf或fgets函数忽略空格。我的文本文件在每一行上有两个字符,可以用空格分隔,也可以不用空格分隔。我需要读取两个字符并将每个字符放在不同的数组中。

file = fopen(argv[1], "r");
if ((file = fopen(argv[1], "r")) == NULL) {
    printf("\nError opening file");
}
while (fscanf(file, "%s", str) != EOF) {
    printf("\n%s", str);
    vertexArray[i].label = str[0];
    dirc[i] = str[1];
    i += 1;
}

1 个答案:

答案 0 :(得分:6)

使用fscanf格式的空格(" ")会导致它读取并丢弃输入上的空格,直到找到非空白字符,并将输入上的非空白字符作为下一个字符被阅读。所以你可以做以下事情:

fscanf(file, " "); // skip whitespace
getc(file);        // get the non-whitespace character
fscanf(file, " "); // skip whitespace
getc(file);        // get the non-whitespace character

fscanf(file, " %c %c", &char1, &char2); // read 2 non-whitespace characters, skipping any whitespace before each