【发布时间】:2017-12-03 08:35:01
【问题描述】:
在这个程序中,我想读取一个文件并将其转换为字符串并用空格、\n、逗号和 + 标记它们,但我正在无限执行第一行
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch,buff[500],bb[500];
int i=0;
fp=fopen("i.c","r");
if(fp==NULL) printf("File not opened");
else{
printf("File opened successfully\n");
ch=getc(fp);
while(ch!=EOF){
fgets(buff,500,fp);
strcat(bb,buff);
ch=getc(fp);
}
char *tok=strtok(bb,"\n ,+=");
while(tok!=NULL){
printf("%s",tok);
tok=strtok(bb,"\n ,+=");
}
}
}
这是我正在阅读 i.c 的文件
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num1=5,num2=6,num3;
char str[10]="hello";
num3=num1+num2;
printf("%s:%d",str,num3);
}
【问题讨论】:
-
代码有几个错误。未在
strcat(bb,buff);之前初始化bb。错误地使用了对strtok的后续调用(应该是NULL参数)。使用fgets循环的错误方式。无需额外的getc。失败后未完成的逻辑fopen。 -
先生,请再看一遍代码。我已经在文件指针下面初始化了 bb 。任何进一步的帮助将不胜感激@Weather Vane
-
抱歉,
bb没有初始化。 Functionstrcat需要一个以 nul 结尾的字符串来追加。局部变量不会自动初始化——你必须自己做,比如char bb[500] = ""; -
看到这一行 int main() { FILE *fp; char ch,buff[500],bb[500];