[英]How can I initialize 2D char array with space in c
我正在做算法練習。 基本上,測試用例將在幾個3 * 5矩陣中輸入數字的形狀,我們需要獲取形狀表示的數字。
因此,我創建了一個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.