访问违例(段异常)
程序代码:
#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]空间不足造成异常,为什么后面的数组没有问题?
如果不是空间不足那是什么原因?求解.....