访问违例(段异常)
程序代码:#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 1
int main()
{ FILE *fp;
char str[N],name[N],s[N],year[N],wname[N],wyear[N],m[N];
if((fp=fopen("string.txt","w"))==NULL)
{ printf("Can't open file!\n");
exit(1);}
for(int i=0;i<N;i++)
{ printf("\n输入职工信息:\n");
printf("职工编号:");
gets(str);
fputs(str,fp); //运行到此处出现异常
printf("输入姓名:");
gets(name);
fputs(name,fp);
printf("输入性别:");
gets(s);
fputs(s,fp);
printf("出生年份:");
gets(year);
fputs(year,fp);
printf("职称:");
gets(wname);
fputs(wname,fp);
printf("任现职年限:");
gets(wyear);
fputs(wyear,fp);
printf("实发工资:");
gets(m);
fputs(m,fp);}
fclose(fp);
}
#define N 1 改成#define N 2 后可以正常运行 注释掉第一部分的gets(str)后面同样可以正常运行
如果说是str[N]空间不足造成异常,为什么后面的数组没有问题?
如果不是空间不足那是什么原因?求解.....








