从C中的文件中提取单词

时间:2014-01-25 08:36:18

标签: c++ c linux

有人可以帮我纠正以下代码吗?一世     需要提取单词(非空白字符序列,直到空格字符或新行字符)。这里代码打印提取的单词的每个字母3次。

#include<stdio.h>
#include<string.h>
main()
{
  FILE *fp1,*fp2,*fp3;
  char ch,str[10],lab[10],opc[10],opd[10];
  int i;
  fp1=fopen("ma.dat","r");

  while((ch = fgetc(fp1)) != EOF)
  {
 i=0;
    if(ch!=' ' || '\n' || -1)
    {
    lab[i++]=ch;
    }
    lab[i]='\0';
i=0;
    if(ch!=' ' || '\n' || -1)
    {
    opc[i++]=ch;
    }
    opc[i]='\0';
i=0;
    if(ch!=' ' || '\n' || -1)
    {
    opd[i++]=ch;
    }
    opd[i]='\0';


    printf("%s %s %s ",lab,opc,opd);

  }
  fcloseall();
}

这是我的意见:

copy start 1000
 lda alpha
 lda five
 sta six
six word 4
alpha rword 5
five byte c'eof'
 end 

,输出为:

c c c o o o p p p y y y       s s s t t t a a a r r r t t t       1 1 1 0 0 0 0 0 0 0 0 0 


       l l l d d d a a a       a a a l l l p p p h h h a a a 


       l l l d d d a a a       f f f i i i v v v e e e 


       s s s t t t a a a       s s s i i i x x x 


 s s s i i i x x x       w w w o o o r r r d d d       4 4 4 


 a a a l l l p p p h h h a a a       r r r w w w o o o r r r d d d       5 5 5 


 f f f i i i v v v e e e       b b b y y y t t t e e e       c c c ' ' ' e e e o o o f f f ' ' ' 


       e e e n n n d d d       

在这里,我使用扫描的逻辑直到eof到达并且(尝试)获得单独的单词,直到达到某个空格或换行符。

1 个答案:

答案 0 :(得分:2)

你有调试器吗?设置断点并逐行执行程序。你会发现你的循环中至少有一个语句是没有意义的。提示:为什么循环内部有i = 0语句?

如果在编码太多天后这不仅仅是一个错字,你可能想了解如何

  1. while循环有效。特别是哪些命令会重复。

  2. 如果有效。特别是像“if”这样的条件语句和像“while”这样的循环语句之间的区别。

  3. PS - 我显然有偏见,但如果您正在寻找一个好的C教程,请尝试我的C教程http://masters-of-the-void.com - 它是为Mac编写的,但您已经启动并运行了编译器已经用它编译了你自己的程序,所以在Linux上做样本应该在你的技能范围内。