0
我試圖存儲從文件中讀取到一個字符數組的字符,但它最終存儲每個後續的字符爲好。對於這段代碼,我創建了一個結構和一個函數來初始化數組。Ç - 字符串在結構返回整個數組
從 「Structures.h」
typedef struct (
int size;
char *elem;
} cvector;
從 「Utilities.c」
cvector make_cvector (int size)
{ cvector temp;
temp.size = size;
temp.elem = calloc(size, sizeof(char));
return temp;
}
然後我想讀的文本文件,上面寫着: 「ABC」
在人體中,我指出:(其中NPTR是用於打開該文件的指針)
cvector NodeID;
NodeID = make_cvector(3);
for(i=0;i<3;i++){
fscanf(nPtr,"%s", &NodeID.elem[i]);
printf("%s ",&NodeID.elem[i]);
}
這將導致「ABC」,但這個循環之後,我輸入另一個循環:
for(i=0;i<3;i++)
printf("%s ", &NodeID.elem[i]);
所得來的「ABC BC C」的時候,其實我想要的「一」,「B」和「C」存儲分別。我的初始化或指針可能有問題,但我一直試圖在線閱讀無濟於事。錯誤在哪裏?謝謝!
謝謝你的和我的理解錯誤。然而,印刷只是一種展示我的問題的手段。我遇到的真正問題是在後面的部分,我把: 'if(strcmp(LoadLoc,&NodeID.elem [j])== 0)' 這基本上從未發生。我想這個錯誤並不是用於初始化,而是使用「strcmp」,這將是一個合適的選擇。 :D我會嘗試在網上搜索。先生非常感謝您! – user2853084
'LoadLoc'是一個包含單個字符的字符串,對嗎?如果是這樣那麼存儲'LoadLoc'在'char'而不是做'如果(LoadLoc == NodeID.elem [J])' – Simon
謝謝!這很有效,但我想保持一定程度的普遍性,因爲程序的某些部分可能轉向比較字符串而不僅僅是字符。無論如何,我通過初始化它們作爲代替「cvector」「CMATRIX」,其中第一維是一個字符串數組,第二尺寸每串字符數組解決了這個問題。感謝所有的幫助! :d – user2853084