标题:为什么我把文件内容以结构体形式读取时,总是缺少首字符呢???
只看楼主
尘埃落雪
Rank: 2
等 级:论坛游民
帖 子:34
专家分:17
注 册:2010-6-7
结帖率:88.89%
已结贴  问题点数:10 回复次数:2 
为什么我把文件内容以结构体形式读取时,总是缺少首字符呢???
#include<stdio.h>
#include<stdlib.h>


/*
   2012.3.31
              为什么会缺少第一个字母呢????没有错误吧??
 */
main()
{   
   FILE *f1;
   char c;
   //文法数组中的计数
   int i=0;
   //文法输出时的计数
   int j=0;
   
   //原始文法的产生式集  
   typedef struct
   {
      char formula[200];        
   }grammarElement ;
   
   grammarElement gramOldSet[200],*ptr;
   
   ptr=gramOldSet;
   //应该每一行读进一个结构体中
   f1=fopen("fomula_input.txt","r");
   
   while(c=getc(f1)!=EOF)
   {    i=0;
       //这一部分有错误???
       while((c=getc(f1))!='\n')
       {  
         (*ptr).formula[i]=c;
         i++;                    
       }
       //每个数组结束的时候添加"\0"
      (*ptr).formula[i]='\0';
        
       ptr++;
       j++;
   }
   fclose(f1);

   ptr=gramOldSet;

   while(ptr<gramOldSet+j)
   {  
      
     //文法按行输入、出   
          printf("%s",(*ptr).formula);
     printf("\n");
     ptr++;                  
   }
   
    printf("\n");   
   system("pause");
           
}
搜索更多相关主题的帖子: 计数 include 结构体 
2012-04-02 17:15
NoSoul
Rank: 9Rank: 9Rank: 9
来 自:沈阳化工大学
等 级:蜘蛛侠
帖 子:283
专家分:1010
注 册:2009-6-6
得分:5 
程序代码:
while((c=getc(f1))!=EOF)
    {
        i=0;
        do
        {
            (*ptr).formula[i]=c;
            i++;
        }
        while((c=getc(f1))!='\n');
        //每个数组结束的时候添加"\0"
        (*ptr).formula[i]='\0';
        ptr++;
        j++;
    }

我想伸手拉近點,竟觸不到那邊,就欠一點點,但這一點點...卻好遠
2012-04-02 17:42
wyk565542030
Rank: 2
等 级:论坛游民
帖 子:8
专家分:55
注 册:2012-3-30
得分:5 
你连续读了两次
while((c=getc(f1))!=EOF)
{
    while((c=getc(f1))!='\n')
    {
    。。。
    }
}
第一个就没了 我是这样认为的
2012-04-02 22:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365057-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023588 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved