有人可以帮我纠正以下代码吗?一世 需要提取单词(非空白字符序列,直到空格字符或新行字符)。这里代码打印提取的单词的每个字母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到达并且(尝试)获得单独的单词,直到达到某个空格或换行符。
答案 0 :(得分:2)
你有调试器吗?设置断点并逐行执行程序。你会发现你的循环中至少有一个语句是没有意义的。提示:为什么循环内部有i = 0语句?
如果在编码太多天后这不仅仅是一个错字,你可能想了解如何
while循环有效。特别是哪些命令会重复。
如果有效。特别是像“if”这样的条件语句和像“while”这样的循环语句之间的区别。