读文件出错!马上送分,在线等!
以下程序把数组中的字符串写到文件中,再读出来写到另一数组中,并从数组输出,但运行fgets(ch2[j++],10,fp);时出错,不知为什么,请教各位,谢谢!!
# include <stdio.h>
main()
{
FILE *fp;
char *ch1[10]={ "aaa ", "bbb ", "ccc ", "ddd ", "eee ", "fff ", "ggg ", "hhh ", "iii ", "jjj "},*ch2[10];
int i=0,j=0;
fp=fopen( "bbb.dat ", "w ");
while(i <10)
{
fputs(ch1[i++],fp);
fputc( '\n ',fp);
}
fclose(fp);
fp=fopen( "bbb.dat ", "r ");
while(!feof(fp))
{
fgets(ch2[j++],10,fp);
}
fclose(fp);
for(i=0;i <10;i++)
puts(ch2[i]);
}
[解决办法]
ch2还没有分配内存
[解决办法]
char *ch2[10];
定义一个指针数组,但是各个指针没拿到内存空间,是个随机地址,往里面存放数据,所以...
[解决办法]
*ch2[]这个都没指向。。不能一开始就那样的。可以
char chB[10][3],*ch2[10];
ch2[10]=chB[10][0];
[解决办法]
# include <stdio.h>
void main()
{
FILE *fp;
char *ch1[10]={ "aaa ", "bbb ", "ccc ", "ddd ", "eee ", "fff ", "ggg ", "hhh ", "iii ", "jjj "};
char ch2[10][10];
int i=0,j=0;
fp=fopen( "bbb.dat ", "w ");
while(i <10)
{
fputs(ch1[i++],fp);
fputc( '\n ',fp);
}
fclose(fp);
fp=fopen( "bbb.dat ", "r ");
while(!feof(fp))
{
fgets(ch2[j++],10,fp);
}
fclose(fp);
for(i=0;i <10;i++)
puts(ch2[i]);
}
[解决办法]
ch2[10][10]一个二维字符数组,把从文件里取出来的字符放到这个数组.又因为数组在使用时系统回自动给其在内存里开辟一块合法的区域.