读写文件
以下程序在TC中编译时出现警告,说什么“可疑的指针软化”,不知什么原因,而且运行时不会建立文件,只有到目录中去运行时才会建,不知什么原因?请教高手,望能详解,谢谢!!
# include <stdio.h>
main()
{
FILE *fp;
int i;
char (*ch)[10],p[10][10]={ "abc ", "def ", "eim ", "dd ", "ownvb ", "d ",
"wpxb ", "wpbtuep ", "wix ", "wq "};
ch=p;
if((fp=fopen( "avc.dat ", "w "))==NULL)
{
printf( "cann 't open this file!\n ");
exit(0);
}
printf( "%s\n ",*(ch+4));
for(i=0;i <10;i++)
{
if(fputs(ch++,fp)==EOF)
printf( "erro ");
fputs( "\n ",fp);
}
}
[解决办法]
建议还是少用 (*ch)[10] 形式的用法
对内存的操作要慎重
涉及到内存泄露等问题
[解决办法]
不习惯使用指向数组的指针,不过按照你的思路改为:
#include <stdio.h>
#include <STDLIB.H> //1
void main(void) //2
{
FILE *fp;
int i;
char (*ch)[10],p[10][10]={ "abc ", "def ", "eim ", "dd ", "ownvb ", "d ",
"wpxb ", "wpbtuep ", "wix ", "wq "};
ch = p;
if((fp=fopen( "avc.dat ", "w "))==NULL)
{
printf( "cann 't open this file!\n ");
exit(0);
}
printf( "%s\n ",*(ch+4));
for(i=0;i <10;i++)
{
if(fputs((char *)ch++,fp)==EOF) //3
printf( "erro ");
fputs( "\n ",fp);
}
fclose(fp); //4
}