所以我得到了一个任务,即在我写"KRAJ"
之前制作输入的程序。但是当我用puts()
打印时,它会在前3个地方有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;
}
答案 0 :(得分:3)
假设我写“完成meKRAJ”,它必须只打印“完成 我“但它打印”ć[]'完成我“
char text[100];
永远不会被初始化,但你打电话
strncat(text,entry,i);
和
if(!flag2)strcat(text,entry);
当你的程序启动时,这两个调用会将你的字符串追加到text[100]
中的任何垃圾。