我正在研究一個項目,我試圖讀取一個CSV文件並檢查它是否有各種不同的參數。 C對我來說是一種新的語言,所以我仍然習慣它,並且我的代碼可能不像它那樣精簡。無論如何,我的問題是這樣的:當我讀取文件以確保每行都具有相同數量的條目時,它可以正常工作,但是當我嘗試將這些值放入二維數組中時,一切都會變得混亂。 arr [0] [0]的值應該是CSV文件中的第一個值,但是當我打印出來看它是什麼時,它始終是最後一行中的第一個值。我不能爲我的生活弄清楚這一點,我一直在看這個代碼,並修改它幾個小時。任何幫助將非常感激!如何使用字符串(char *)從CSV文件在C中填充二維數組C
int parseFile(int width, int height, char*fileName) {
char*** matrix = malloc(width*height*sizeof(char*));
int counter = 0;
int pointer = 0;
FILE *file = fopen(fileName, "r");
const size_t line_size = 1024;
char* line = (char*) malloc(line_size);
while (fgets(line, line_size, file) != NULL) {
char** data = malloc(width*sizeof(char*));
char *delim = ",";
char *string = strtok(line, delim);
while (string != NULL) {
size_t ln = strlen(string) - 1;
if (string[ln] == '\n') {
string[ln] = '\0';
}
data[counter] = string;
string = strtok(NULL, delim);
counter++;
}
matrix[pointer] = data;
counter = 0;
pointer++;
}
printf("%s", matrix[0][0]);
return 0;
}
'炭結果***矩陣= malloc的(寬度×高度×的sizeof(char)的);'...氣味犯規。 –
你是什麼意思?即使我將所有字符串存儲在單個數組中,每當有新行時,它都會覆蓋第一個條目。 –
哎呦,原來是printf(「%s」,matrix [0] [0]);但我正在做一些測試,並忘記將其改回。我編輯了上面的代碼以獲得正確的打印語句。 –