麻烦大家看看这段写文件的代码哪里有问题?
int WriteToFile(POINT *pPoint,int n)
{
int i,j,intword=0;
FILE *fp;
char *pc,c;
pc=(char*)malloc(10*sizeof(char));
if((fp=fopen( "C:\\TC\\prj\\point.txt ", "w "))==NULL)
{
fp=fopen( "C:\\TC\\prj\\point.txt ", "w+ ");
if(fp==NULL)
{
printf( "Create file failed!\n ");
return -1;
}
else printf( "Create file success!\n ");
}
else printf( "Open file success!\n ");
for(i=0;i <n;i++)
{
printf( "%d,%d\n ",pPoint[i].x,pPoint[i].y);
for(j=0;j <10;j++)
pc[j]= '\0 ';
sprintf(pc, "%d,%d\n ",pPoint[i].x,pPoint[i].y);
printf( "PC: %s\n ",pc);
while((c=*pc++)!= '\0 ')
{
fputc(c,fp);
}
/*****--这里也麻烦看看,*******/
/*printf( "%d [%d,%d]\n ",i,pPoint[i].x,pPoint[i].y);*/
/*intword=fprintf(fp, "%d,%d\n ",pPoint[i].x,pPoint[i].y);
intword=fwrite(&pPoint[i],sizeof(POINT),1,fp);
printf( "Total words:%d [%d,%d]\n ",intword,pPoint[i].x,pPoint[i].y); */
}
fclose(fp);
return 0;
}
俺想把坐标结构(x,y)以 "[%d,%d]\n "的格式输出到文件中,
有什么错误希望大家帮忙指出来,
最好有解决方法,
[解决办法]
pc=(char*)malloc(10*sizeof(char)); 应该放在打开文件成功后面,还有free
for(j=0;j <10;j++)
pc[j]= '\0 '; 多余,后面的sprintf能处理字符串
while((c=*pc++)!= '\0 ')
{
fputc(c,fp); pc++后下次循环怎么办,直接用fputs不就行了
}
[解决办法]
你用 *PC++ 直接值
可以再用 指 指向PC 然後再值
[解决办法]
主要是*pc++的问题,
*pc++,根据运算符的优先级,*比++要高,所以前式相当于(*pc)++,只是让指针当前所指向的值递增,而我们实际想要的结果是让指针后移,指向下一个位置,并获得其值。
另外,pc在malloc之后,要进行free.
修改之后:while((c=*(pc++))!= '\0 ')