任何人都知道如何用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;
}
谢谢!
答案 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){