C语言文件操作为啥这个文件读取进入死循环了?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言文件操作为啥这个文件读取进入死循环了?相关的知识,希望对你有一定的参考价值。
代码如下
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TRUE -1 //做两个宏.
#define FALSE 0
struct Fname
char* str; //存储文件名称
;
char ch[3][6]="1.txt","2.txt","3.txt";
Fname FileName[100];
Fname* fname()
for(int j=0;j<3;j++)
FileName[j].str=ch[j];
return FileName;
int ReadFile(char *fname, char* buffer)
FILE *fp;
char ch;
int i=0;
if((fp=fopen(fname,"rt"))==NULL)
printf("\nCannot open file strike any key exit!");
getchar();
return FALSE;
printf("\n");
while(!feof(fp))
ch=fgetc(fp);
buffer[i]=ch;
i++;
buffer[i] = '\0';
printf("\n");
fclose(fp);
printf("\n**********************************\n");
printf("%s",buffer); //输出文件内容
printf("\n**********************************\n");
return TRUE;
void main()
int i=0;
Fname *Fn;
char *p = NULL; //#define NULL 0
char *buf = NULL;
buf = (char*)malloc(sizeof(char)*1024); //1k
Fn=fname();
for(i=0;i<3;i++)
p=Fn[i].str;
printf("%s",p);
ReadFile(p, buf);
free(buf);
我拷贝错了,大家不要看上面的代码,看这个
#include<stdio.h>
void main()
int stuid,stuscore,stunum,i;
FILE *fp;
printf("学生数:");
scanf("%d",&stunum);
if((fp=fopen("stu.txt","w"))==NULL)
printf("can not open file\n");
return;
printf("请输入%d个学生信息",stunum);
for(i=0;i<stunum;i++)
scanf("%d%d",&stuid,&stuscore);
fprintf(fp,"stuid-%d\tstuscore-%d",stuid,stuscore);
fclose(fp);
if((fp=fopen("stu.txt","r"))==NULL)
printf("failede to open file!");
return;
while(fscanf(fp,"%d%d",&stuid,&stuscore)!=EOF)
printf("stuid-%d\tstuscore-%d\n",stuid,stuscore);
fclose(fp);
请输入2个学生信息1 33
2 44
stuid-1 stuscore-33
stuid-2 stuscore-44
Press any key to continue
#include<stdio.h>
void main()
int stuid,stuscore,stunum,i;
FILE *fp;
printf("学生数:");
scanf("%d",&stunum);
if((fp=fopen("stu.txt","w"))==NULL)
printf("can not open file\n");
return;
printf("请输入%d个学生信息",stunum);
for(i=0;i<stunum;i++)
scanf("%d%d",&stuid,&stuscore);
fprintf(fp,"stuid-%d\tstuscore-%d\n",stuid,stuscore); //这里把格式都带好
fclose(fp);
if((fp=fopen("stu.txt","r"))==NULL)
printf("failede to open file!");
return;
while(EOF !=fscanf(fp,"stuid-%d\tstuscore-%d\n",&stuid,&stuscore)) //这里把格式都带好
printf("stuid-%d\tstuscore-%d\n",stuid,stuscore); //这里把格式都带好
fclose(fp);
参考技术A fprintf只能以二进制的形式读写的吧,把fp=fopen("stu.txt","rb")试试,(前面一个改成wb) 参考技术B 要使用while(!feof(fp)) ........; 点到为止
在用KEIL调试程序时,遇到读取外部数据、死循环使得程序不能继续执行时怎么办?
在循环处设断点,程序执行到后修改一下外部数据,使其满足跳出循环的条件,然后再执行,这样就可以继续调试下去。如果这种情况很多,可以通过在程序中增加条件编译语句方便调试。比如:#define DEBUG //条件编译选择,可放在文件头部.H文件之后。
。。。。。。。
#ifdef DEBUG
x=0; //调试时使用这条语句,执行下一句时就能跳出循环了
#endif
while(x==1); //假设这就是你所说的读取外部数据的语句,未读到数据则原地循环
调试完成后注掉#define DEBUG,也就是
//#define DEBUG
这样正式编译时x=0;这条语句就不会被编译进去了。以后调试时再恢复。
这只是个例子,相信你能理解这个含义从而加以应用。 参考技术A 怎么会呢?你的调试环境选择使用外部总线了没?追问
什么外部总线?可以说清楚点吗?
以上是关于C语言文件操作为啥这个文件读取进入死循环了?的主要内容,如果未能解决你的问题,请参考以下文章