我的''打印所需的输出后,代码打印出奇怪的东西

时间:2017-10-15 10:08:31

标签: c

我的代码是关于对柏林说一句话。这句话的一部分以"柏林"另一部分是来自用户的标准输入..打印输出后..我得到奇怪的随机事情,如" w $

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (){

    #define MAX 1000

    char arr [MAX] ;
    char star [] = "Berlin ";
    int i = 0;

    while ((arr[i] = getchar()) != '\n') {
        i++;
    }

    printf("%s%s", star,arr);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

您没有为arr添加空终止符(因为您使用%s将其作为C字符串打印)。

添加

arr[i] = 0;
在while循环之后

还有另外两个潜在的问题:

  1. 你没有做过边界检查。因此,如果您输入超过1000个字符,arr可能会溢出。
  2. getchar()可以在输入失败时返回EOF,您需要将其考虑在内。