问题描述
- C语言程序,编译没错,但执行完之后就提示错误。
-
#include
#include
#include
struct st
{
char name[50];
int age;
}info;
void main(void)
{
struct st s[20];
char FileA[50];
FILE*fp;
if((fp=fopen("e:students.txt","wt"))=NULL)
{
printf("打开过程中有错,请检查n");
exit(1);
}
for(int i=0;i<3;i++)
{
scanf("%s%d",info.name,&info.age);
}for(i=0;i<3;i++) if (fwrite(&s[i],sizeof(struct st),1,fp)==0) { printf("块写入成功"); exit(0); } getch();
}
图片我上传不了,它提示的是1.exe已停止工作。然后e盘下有students这个文件。但是里面没有内容。
解决方案
s 定义了,没有初始化。它里面的内容是随机的,你对它按字符串操作一般来说会越界。限定大小,当然也不会越界,但是谁都不知道它的内容是什么!
解决方案二:
你scanf输入的东西保存在info里面,而且给info赋值了三次,并没有给s数组初始化,所以你写进去的东西都是未定义的乱码,当然不成功。
解决方案三:
。。。
if((fp=fopen("e:students.txt","wt"))=NULL) ????你这是干嘛
if((fp=fopen("e:students.txt","wt"))==NULL)
解决方案四:
FILE*fp ; 他是不是得指向NULL
if((fp=fopen("e:students.txt","wt"))=NULL) 如果没有返回文件流指针, 你说这个指针会指向哪?
解决方案五:
if((fp=fopen("e:students.txt","wt"))=NULL) 双等号好不啦
解决方案六:
文件打开失败,你却误以为打开成功
时间: 2024-08-18 14:20:07