跳过c中文本文件的第一个输入

时间:2014-09-10 12:56:10

标签: c

任何人都知道如何用C语言做到这一点?

INPUT:(input.txt)

2 WORD WORD WORD

输出:

File contains: 2 word
Word are: WORD WORD

*我是C编程的新手,我正在练习自我。 我有一些代码,但还没有解决这个问题。 这是我的代码:

#include<stdio.h>

int main(){
    FILE* f = fopen("input.txt","r");
    char c;
    int l = 1;

    if(f == NULL){
        printf("File not found!");
        return;
    }
    c = getc(f);
    while(c != EOF){
        if(c == ' '){
            l++;
        }
        c = getc(f);
    }
    fclose(f);

    printf("File contain: %d word",l);
    return 0;
}

谢谢!

3 个答案:

答案 0 :(得分:0)

我建议使用fgets()来读取该行,然后将该行拆分为单词。一旦拆分,您就可以轻松进行验证。

答案 1 :(得分:0)

您应该首先使用fgets读取一行,删除前导(可能是尾随)空格。

如果第一个字符是数字(例如使用isdigit),则使用strtol转换为数字,然后根据需要使用fgets分割读取行中的字继续循环直到你完成输入文件中的行。

答案 2 :(得分:0)

#include<stdio.h>

int main(){
    FILE *f = fopen("input.txt","r");
    int wc, first_time = 1;
    char word[128];

    fscanf(f, "%d", &wc);
    printf("File contain: %d word\n", wc);
    printf("Word are: ");

    fscanf(f, "%*s");//skip
    while(1==fscanf(f, "%127s", word)){
        if(first_time)
            first_time = !first_time;
        else
            printf(" ");
        printf("%s", word);
    }
    printf("\n");
    fclose(f);

    return 0;
}

<强>更新

int c, wc, first_time = 1;
char word[128];

fscanf(f, "%d", &wc);
printf("File contain: %d word\n", wc);
printf("Word are: ");

c = 0;
while(1==fscanf(f, "%127s", word) && c++ < wc){