从C中的文件中提取单词

Extracting words from a file in C

本文关键字:提取 单词 文件      更新时间:2023-10-16

任何人都可以帮助我更正以下代码。我 需要提取单词(非白空间字符的序列直至白空间字符或新的线字符)。在这里,代码打印每个提取单词的字母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]='';
i=0;
    if(ch!=' ' || 'n' || -1)
    {
    opc[i++]=ch;
    }
    opc[i]='';
i=0;
    if(ch!=' ' || 'n' || -1)
    {
    opd[i++]=ch;
    }
    opd[i]='';

    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并(尝试)获取单独的单词,直到达到某个空间或newline为止。

您有调试器吗?设置一个断点并逐步逐步划线。您会发现,循环中至少有一个语句没有任何意义。提示:为什么循环中的i = 0语句?

如果这不仅是在编码过多后的错字,您可能想阅读

  1. a时循环起作用。特别是重复哪些命令。

  2. 如果有效。尤其是条件语句(例如" if"和循环语句)之类的区别。

ps-我显然有偏见,但是如果您正在寻找一个好的教程,请尝试我的C教程http://masters-of-the-void.com-它是为Mac编写的,但是您已经已经为让您的编译器启动和运行,并且您已经对其进行了编译,因此仅在Linux上进行样本就应该在您的技能中。