fscanf til EOF逐字保存文件内容
嗨,我正试图制作一个代码,通过fscanf读取文件,找到文件中所有单独的单词,并将其保存在数组中,但它不起作用。你能告诉我目前我的代码有什么问题吗fscanf til EOF逐字保存文件内容,c,scanf,C,Scanf,嗨,我正试图制作一个代码,通过fscanf读取文件,找到文件中所有单独的单词,并将其保存在数组中,但它不起作用。你能告诉我目前我的代码有什么问题吗 char data[300][45]; char words[100]; char garbage[10]; #include <stdio.h> int main(void) { int i=0,j; FILE* file=fopen("week4_data1.in","r"); while((fscanf(file,"%[a-zA
char data[300][45];
char words[100];
char garbage[10];
#include <stdio.h>
int main(void)
{
int i=0,j;
FILE* file=fopen("week4_data1.in","r");
while((fscanf(file,"%[a-zA-Z]s",data[i++]))!=EOF && (fscanf(file,"%[^a-zA- Z]s",garbage))!=EOF);
for(j=0;j<i;j++)
printf("%s",data[j]);
return 0;
char数据[300][45];
字符字[100];
煤焦垃圾[10];
#包括
内部主(空)
{
int i=0,j;
FILE*FILE=fopen(“week4_data1.in”,“r”);
而((fscanf(文件,“%[a-zA-Z]s”,数据[i++])!=EOF&&(fscanf(文件,“%[^a-zA-Z]s”,垃圾))!=EOF);
对于(j=0;j,您可以按照以下方法完成工作
打开文件。帮助:
检查打开是否成功。提示:返回值
从文件中读取一行。检查是否成功。帮助:并返回值
开始标记读取行并逐个存储到数组中。帮助:
继续,直到令牌为空
继续,直到fgets()
为空
格式字符串“%[a-zA-Z]s”
和“%^[a-zA-Z]s”
不正确。这些格式字符串中不需要s
。请使用“%[a-zA-Z]”和“%^[a-zA-Z]”
我有一种感觉可以解决你的问题
要使代码健壮,应指定格式字符串中的最大字符数,并确保i
不超过有效限制
while( i < 300 &&
fscanf(file,"%44[a-zA-Z]",data[i++]) != EOF &&
fscanf(file,"%9[^a-zA-Z]",garbage) != EOF );
while(i<300&&
fscanf(文件“%44[a-zA-Z]”,数据[i++])!=EOF&&
fscanf(文件“%9[^a-zA-Z]”,垃圾)!=EOF);
你听说过段落吗?请正确编排/缩进你的问题。这是我关于堆栈溢出的第一篇文章,社区比我想象的要敌对得多,是的,我知道这从技术上讲是一个段落,但我认为它足以让我的思想得到理解\n请先阅读第页。见下面Dilip的答案。打断你的活动“while((fscanf)”这一行是一团乱麻,无法一步一步地通过。少考虑“聪明的代码”,多考虑“如何编写代码以便调试”。