所以我得到的任务是制作一个程序,在我写"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/

10-11 21:57