C语言程序改错!----------文件操作!~~~!

来源:百度知道 编辑:UC知道 时间:2024/05/11 04:17:18
#include<stdio.h>
#include<malloc.h>
void string()
{
char *s[2];
int a;
FILE *fp;
s[0]="Turbo c",s[1]="BASIC";
fp=fopen(".\\LX1.txt","w");
if(fp==NULL)
printf("file open error!\n");
a=fprintf(fp,"%s %s",s[0],s[1]);
if(a>0)
printf("写入成功___!!\n\n");
printf("%s %s\n",s[0],s[1]);

}
void read()
{
FILE *fp;
char a[10],b[10];
fp=fopen(".\\LX1.txt","rb");
if(fp==NULL)
printf("File open error\n");
fgets(a,8,fp);
fgets(b,7,fp);
printf("%s%s\n",a,b);
}

void main()
{
string();
read();
}
结果为何这样

乱码问题,来自于你的非法操作.char *s[2];你声名了一个指针数组,指针数组的长度为2.s[0]="Turbo c",s[1]="BASIC";此处的赋值已经越界了.
s[0]和s[1]真实长度是未知的.但有一点是肯定,他们的结束是以\0结束的.只有碰到\0,字符串才能结束.里边的乱码就是s[0]到\0之间的字符,s[1]到\0的字符.
另外,你打开文件不关闭文件,这样的操作是非法的,会造成内存泄露.

#include<stdio.h>
//#include<malloc.h>
void string()
{
char *s[2];
int a;
FILE *fp;
s[0]="Turbo c",s[1]="BASIC";
fp=fopen(".\\LX1.txt","w");
if(fp==NULL)
printf("file open error!\n");
a=fprintf(fp,"%s %s",s[0],s[1]);
if(a>0)
printf("写入成功___!!\n\n");
printf("%s %s\n",s[0],s[1]);
fclose(fp); //!!!!!!!!!!!!!!!!!!!!!!!!!!

}
void read()
{
FILE *fp;
char a[10],b[10];
fp=fopen(".\\LX1.txt","r");
if(fp==NULL)
printf("Fi