我已经编写了一个读取命令功能。它将字符存储到数组之前#34; go"(以新行开头)并返回字符数但似乎是第一个字总是没有检测到,有时它会返回而不识别单词" go"。谁能帮我。非常感谢!
int read_command(char *input){
char inputarr[1000];
int count=0;
do
{
inputarr[count++]=getchar();
input++;
}while(inputarr[count-2]!='\n'&&inputarr[count-1]!='g'&& inputarr[count]!='o');
inputarr[count--]='\0';
inputarr[count--]='\0';
for (int i=0 ;inputarr[i]!='\0';i++) {
printf("%c",inputarr[i]);
}
return count;
}
典型输出:
1
I like apple and how about you
go
like apple and how about you
29Program ended with exit code: 0
2
I like today's weather
and it is very sunny
like today's weather
22Program ended with exit code: 0
谢谢!
答案 0 :(得分:1)
您尚未正确处理所有方案 - 1.如果"去"在第一线本身? 2.如果句子中的第一个单词以&#34开头怎么办?去"子串? 3.在开始时,您无法检查inputarr [count-2],因为它将是负值。 您可以参考以下程序,如果您输入" go"然后按Enter键,它将打印所有行 -
#include <stdio.h>
int main(void)
{ int c='\0';
char ch[100];
int i=0;
while (c != EOF){
c = getchar();
ch[i]=c;
i++;
printf("<%c>\n",c);
if(i >= 3 && ch[i-1] == 'o' && ch[i-2] == 'g' && ch[i-3] == '\n'){
int j;
for(j=0;j<i-2;j++){
printf("%c",ch[j]);
}
break;
}
}
return 0;
}