首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

麻烦大家看看这段写文件的代码哪里有有关问题

2012-03-01 
麻烦大家看看这段写文件的代码哪里有问题?intWriteToFile(POINT*pPoint,intn){inti,j,intword0FILE*fpc

麻烦大家看看这段写文件的代码哪里有问题?
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 ')

热点排行