[問題] C語言 讀取txt的問題

看板C_and_CPP (C/C++)作者 ( Kaonashi)時間16年前 (2009/05/11 17:34), 編輯推噓3(303)
留言6則, 5人參與, 最新討論串1/1
我的問題是要從txt檔裡讀取裡面的成績 然後成積再做排序的動作 所以我把讀取成績的時候把它存到陣列裡面 可是 我txt檔的內容是 50 60 30 30 90 60 70 20 80 60 30 讀出來的卻是 V[0][0] = 50 V[1][0] = 60 V[2][0] = 30 V[3][0] = 30 V[4][0] = 90 V[5][0] = 60 V[6][0] = 70 V[7][0] = 20 V[8][0] = 80 V[9][0] = 60 V[10][0] = 0 最後一個值不對... 附上我的程式碼 #include <stdio.h> #include <stdlib.h> #include <string.h> #define FALSE -1 #define SUCCESS 0 #define MAX_NUM 1000 int main(void) { FILE *fp= NULL; char tmp[10] = {0}; char buffer[MAX_NUM] = {0}; int **V = NULL; int row = 0, column = 0, column_tmp = 0; int i = 0, j = 0; if( (fp = fopen("input.txt", "r")) == NULL ) return FALSE; while( fgets(buffer, MAX_NUM, fp) != NULL ) { row += 1; for(i=0, j=0; i<=(int)strlen(buffer); i++) { if( (buffer[i] == '\n') || (buffer[i] == '\t') ) { column_tmp++; j = 0; memset(tmp, 0, sizeof(tmp)); } else { tmp[j] = buffer[i]; j++; } } if( column_tmp > column ) column = column_tmp; column_tmp = 0; memset(buffer, 0, sizeof(buffer)); } V = (int **)malloc(row * sizeof(int *)); for(i=0; i<row; i++) V[i] = (int *)malloc(column * sizeof(int)); for(i=0; i<row; i++) for(j=0; j<column; j++) V[i][j] = 0; row = 0; column = 0; memset(tmp, 0, sizeof(tmp)); memset(buffer, 0, sizeof(buffer)); fseek(fp, 0, SEEK_SET); while( fgets(buffer, MAX_NUM, fp) != NULL ) { for(i=0, j=0; i<=(int)strlen(buffer); i++) { if( (buffer[i] == '\n') || (buffer[i] == '\t') ) { V[row][column_tmp] = atoi(tmp); column_tmp += 1; j = 0; memset(tmp, 0, sizeof(tmp)); } else { tmp[j] = buffer[i]; j++; } } row += 1; if( column_tmp > column ) column = column_tmp; column_tmp = 0; memset(buffer, 0, sizeof(buffer)); } fclose(fp); for(i=0; i<row; i++) for(j=0; j<column; j++) printf("V[%d][%d] = %d\n", i, j, V[i][j]); system("pause"); return SUCCESS; } 有一點長...拜託大家幫幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.252.52

05/11 18:51, , 1F
你的陣列 size 只有 10,你的資料確有 11 筆
05/11 18:51, 1F

05/11 21:09, , 2F
跟我一樣是寫VB的習慣導致?VB裡陣列是宣告最大值
05/11 21:09, 2F

05/11 21:10, , 3F
宣告a[10]是11筆資料,而c裡面宣告a[10]只有0~9的10筆
05/11 21:10, 3F

05/11 23:49, , 4F
不是陣列大小的問題!!
05/11 23:49, 4F

05/12 01:28, , 5F
要不要用fscanf去讀讀看@@?
05/12 01:28, 5F

05/19 23:11, , 6F
你的文字檔要在30後面多一個換行...
05/19 23:11, 6F
文章代碼(AID): #1A1_4r37 (C_and_CPP)
文章代碼(AID): #1A1_4r37 (C_and_CPP)