簡體   English   中英

如何在C中使用空格初始化2D char數組

[英]How can I initialize 2D char array with space in c

我正在做算法練習。 基本上,測試用例將在幾個3 * 5矩陣中輸入數字的形狀,我們需要獲取形狀表示的數字。

輸入(測試用例)將如下所示,表示0123456789): 0123456789

因此,我創建了一個3 * 5的矩陣,並輸入了一些用於測試的開始。 但是,它不能很好地工作。

由於輸入中有空間,因此我假設scanf無法正常工作。 我正在使用獲取,每一行。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main(){
       char code[5][3];
       int i;
       for(i = 0; i < 5; i++){
          gets(code[i]);
          printf("%d\n",i);
       }
    }

因此,如果我運行此代碼,我將無法退出循環,因為我的價值永遠不會超過3。我的價值會一直增加到3,然后又回到0。

在此處輸入圖片說明

有人可以告訴我這里發生了什么嗎?

新更新: 在此處輸入圖片說明

我無法用您提供的代碼重現該問題,它必須取決於編譯器及其所運行的操作系統。

但是:這段代碼至少存在一些錯誤:當gets讀取3個字符時,由於末尾添加了\\0 ,因此它將4個字符存儲在內存中。 因此,您不應該直接在code數組中閱讀; 只需讀取另一個更長的緩沖區,並且memcpy數組中僅3個字符。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    char code[5][3];
    char line[100];
    int i;
    for(i = 0; i < 5; i++){
        fgets(line, sizeof line - 1, stdin);
        memcpy(code[i], line, 3);
        printf("%d\n",i);
    }
}

暫無
暫無

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

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