gets()和puts()显示我没有输入的字符

时间:2016-06-08 15:21:58

标签: c string gets puts

所以我得到了一个任务,即在我写"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;
}

1 个答案:

答案 0 :(得分:3)

  

假设我写“完成meKRAJ”,它必须只打印“完成   我“但它打印”ć[]'完成我“

char text[100];

永远不会被初始化,但你打电话

strncat(text,entry,i);

if(!flag2)strcat(text,entry);

当你的程序启动时,这两个调用会将你的字符串追加到text[100]中的任何垃圾。