[英]Getting 2d char array dimensions and content from a text file C
堆棧中有很多這樣的問題,但我找不到關於特定問題的問題,因此我決定發布..
我從一個結構如下的文本文件中獲取輸入:
X Y
A1 A2 AY
A4 A5 ..
AX .. ..
第一行二維數組和由 X 行 Y 列字符組成的二維數組的維度。
從文本文件的第一行轉換到 rest 時出現問題。
我的輸入代碼如下:
#include<stdio.h>
#include<stdlib.h>
int n,m;
int main(int argc,char **argv){
if(argc!=2){
perror("Error: ");
return EXIT_FAILURE;
}
FILE* txtfile=fopen(argv[1],"r");
if(txtfile<0){
perror("Error: ");
return EXIT_FAILURE;
}
char lab[n][m];
fscanf(txtfile,"%d %d",&n,&m);
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
fscanf(txtfile," %c",&lab[i][j]);
}
}
示例輸入如下:
3 3
ULD
LUD
LRL
產生結果:
lab[0][0] = L
lab[0][1] = R
lab[0][2] = L
lab[1][0] = L
lab[1][1] = R
lab[1][2] = L
lab[2][0] = L
lab[2][1] = R
lab[2][2] = L
這顯然是錯誤的......如果我通過終端的用戶輸入提供 n,m 或在我的程序中給他們一個值(在這種情況下為 n = 3 和 m = 3),並將它們從文本文件中刪除:
ULD
LUD
LRL
然后我得到正確的二維數組:
lab[0][0] = U
lab[0][1] = L
lab[0][2] = D
lab[1][0] = L
lab[1][1] = U
lab[1][2] = D
lab[2][0] = L
lab[2][1] = R
lab[2][2] = L
在讀取第一行后,我嘗試使用 fseek 將文件中的指針移動到第二行,但沒有結果。
感謝任何幫助/解釋,我還是 C 的新手。
好吧,回答我自己的問題,並從我自己的愚蠢中學習......我在實際將值分配給 n,m 之前聲明了字符數組,從而導致“數組損壞”。 我花了半天的時間認為這是我遺漏的一些令人費解的 C 指針的東西,但事實證明這只是一個業余錯誤......在發布后 5 分鍾字面意思是......
char lab[n][m];
fscanf(txtfile,"%d %d",&n,&m);
是錯誤的,應該是:
fscanf(txtfile,"%d %d",&n,&m);
char lab[n][m];
我會保持這個問題不被刪除,以防其他人犯同樣的愚蠢錯誤......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.