Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用C语言从文件中提取单词_C++_C_Linux - Fatal编程技术网

C++ 用C语言从文件中提取单词

C++ 用C语言从文件中提取单词,c++,c,linux,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))

有人能帮我更正下面的代码吗。我 需要提取单词(从非空白字符序列到空白字符或新行字符)。这里的代码将提取的单词的每个字母打印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();
}
输出为:

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,并(尝试)获取单独的单词,直到到达某个空格或换行符。

您有调试器吗?设置断点并逐行遍历程序。您会发现循环中至少有一条语句毫无意义。提示:为什么循环中有i=0语句

如果这不仅仅是编码太多天后的一个打字错误,您可能想了解一下如何进行

  • 一个while循环可以工作。特别是哪些命令会被重复

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


  • PS-我显然有偏见,但是如果你想找一个好的C教程,试试我的C教程-它是为Mac编写的,但是你已经安装并运行了你的编译器,并且你已经用它编译了自己的程序,所以在Linux上做示例应该是你的技能范围内的事情。

    什么是“单词”?以空白字符或EOF结尾的非空白字符序列?如果是这样的话,那么如何读取它们似乎是显而易见的,至少对于准备编写自己的两段汇编程序的人来说是如此。欢迎来到堆栈溢出。你会得到好问题的好答案,但这一个不符合准则。请看,然后考虑如何展示你至少对解决的问题了解最少。显示您是如何尝试scanf的可能是一个好的开始…word意味着一系列以空白字符结尾的非空白字符。它是从一个包含atmost 3个单词的文件中读取的。你应该先读一本关于教C的书,以获得基础知识。祝你编写汇编程序好运。你能推荐一些好书吗?
    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