一个文件操作程序出现的问题
#include <stdio.h>
#define SIZE 4
struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save(); /* 原型 */
void load(); /* 原型 */
void main()
{ int i;
for(i=0; iSIZE; i++) /* 从键盘读入数据 */
scanf("%s%d%d%s",
stud[i].name, &stud[i].num, &stud[i].age, stud[i].addr);
save(); /* 存盘 */
load(); /* 从盘读出 */
for(i=0; iSIZE; i++) /* 屏幕上显示 */
printf("%-10s%4d%4d%-15s\n", stud[i].name, stud[i].num, stud[i].age, stud[i].addr);
}
void save()
{ FILE *fp;
int i;
if ((fp=fopen("stu_list", "wb"))==NULL)
{
printf("can not open file\n";
exit(0);
}
for(i=0; iSIZE; i++)
if (fwrite(&stud[i], sizeof(struct student_type), 1, fp) != 1)
printf("file read error\n");
}
void load()
{ FILE *fp;
int i;
if ((fp=fopen("stu_list", "rb"))==NULL)
{
printf("can not open file\n";
return;
}
for(i=0; iSIZE; i++)
if (fread(&stud[i], sizeof(struct student_type), 1, fp) != 1)
{
if (feof(fp)) return;
printf("file read error\n");
}
}
用dev-c++编译后,出了好多处错误:stray '\241' in program 这是怎么回事??
问题点数:20、回复次数:7Top
1 楼grooving()回复于 2004-12-01 08:57:59 得分 10
代码中有全角字符。
删除所有的空格及空行。Top
2 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2004-12-01 09:11:24 得分 10
for(i=0; iSIZE; i++) ///////////////////////
if ((fp=fopen("stu_list", "rb"))==NULL)
{
printf("can not open file\n"; /////////////////////////////////////
return;
}
楼主先把笔误改了再说。Top
3 楼talkingmute(CS-{Z})回复于 2004-12-01 09:36:22 得分 0
已经改了下,还是这么多错误!
#include <stdio.h>
#define SIZE 4
struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save();/* 原型 */
void load(); /* 原型 */
void main()
{ int i;
for(i=0;i<SIZE;i++) /* 从键盘读入数据 */
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
save(); /* 存盘 */
load(); /* 从盘读出 */
for(i=0;i<SIZE;i++) /* 屏幕上显示 */
printf("%-10s%4d%4d%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
void save()
{ FILE *fp;
int i;
if((fp=fopen("stu_list", "wb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file read error\n");
}
void load()
{ FILE *fp;
int i;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("can not open file\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
if(feof(fp)) return;
printf("file read error\n");
}
}
Top
4 楼f26511314(我吃巧克力饼)回复于 2004-12-01 09:46:28 得分 0
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
struct student_type
{ char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save();/* 原型 */
void load(); /* 原型 */
void main()
{
int i;
for(i=0;i<SIZE;i++) /* 从键盘读入数据 */
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
save(); /* 存盘 */
load(); /* 从盘读出 */
for(i=0;i<SIZE;i++) /* 屏幕上显示 */
printf("%-10s%4d%4d%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("stu_list", "wb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file read error\n");
}
void load()
{
FILE *fp;
int i;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("can not open file\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
if(feof(fp)) return;
printf("file read error\n");
}
}
Top
5 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2004-12-01 09:57:30 得分 0
重新打一遍吧,正如 grooving() 所说,文件中有非ASCII字符存在,编译器不认知,所以报错了。Top
6 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2004-12-01 10:03:09 得分 0
你的空格是全角空格吧?把它换成半角空格就好了。Top
7 楼talkingmute(CS-{Z})回复于 2004-12-03 18:38:08 得分 0
那能否通过#define把全角字符转换为半角字符呢?Top




