所以我得到的任务是制作一个程序,在我写"KRAJ"
之前接受输入。但当我用puts()
打印时,它在前三个位置将多出3个字符。假设我写"finish meKRAJ"
它只需要打印"finish me"
但它打印"ć[]'finish me"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char text[100];
char entry[100];
int i;
int flag=1;
int flag2;
do{
printf("Enter txt:finish by writing KRAJ\n");
gets(entry);
for(i=0;i<strlen(entry);i++){
if(entry[i] == 'K' && entry[i+1] == 'R' && entry[i+2] == 'A' && entry[i+3] == 'J'){
strncat(text,entry,i);
flag=0;
flag2=1;
break;
}
else{
flag2=0;
}
}
if(!flag2)strcat(text,entry);
}while(flag);
printf("\n You have entered:\n");
puts(text);
//testing first char
printf("\nTesting first char:%c",text[0]);
printf("\ntxt lenght:%d",strlen(text));
return 0;
}
最佳答案
假设我写的是“finish meKRAJ”它只需要打印“finish”
“我”但上面印着“完成我”
char text[100];
从未初始化,但您调用
strncat(text,entry,i);
和
if(!flag2)strcat(text,entry);
当程序启动时,这两个调用将把字符串追加到
text[100]
中的任何垃圾中。关于c - gets()和puts()显示我没有输入的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37706679/