簡體   English   中英

打印所需的輸出后,我的“c”代碼打印出奇怪的東西

[英]My 'c' code prints weird stuff after printing the required output

我的代碼是關於說一個關於柏林的句子..這句話的一部分以“柏林”開頭,另一部分來自用戶的標准輸入..打印輸出后..我得到奇怪的隨機東西,比如“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;
}

您尚未為arr包含空終止符(因為您使用%s將其打印為 C 字符串)。

添加

arr[i] = 0;

在 while 循環之后。

還有兩個潛在的問題:

  1. 你還沒有做邊界檢查。 因此,如果您輸入超過 1000 個字符,則arr可能會溢出。
  2. getchar()可以在輸入失敗時返回EOF ,您需要考慮到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM