C++ 用C语言从文件中提取单词
有人能帮我更正下面的代码吗。我 需要提取单词(从非空白字符序列到空白字符或新行字符)。这里的代码将提取的单词的每个字母打印3次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))
#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语句 如果这不仅仅是编码太多天后的一个打字错误,您可能想了解一下如何进行
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