作者gna239 ( Kaonashi)
看板C_and_CPP
標題[問題] C語言 讀取txt的問題
時間Mon May 11 17:34:44 2009
我的問題是要從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
1F:推 qazq:你的陣列 size 只有 10,你的資料確有 11 筆 05/11 18:51
2F:→ Peruheru:跟我一樣是寫VB的習慣導致?VB裡陣列是宣告最大值 05/11 21:09
3F:→ Peruheru:宣告a[10]是11筆資料,而c裡面宣告a[10]只有0~9的10筆 05/11 21:10
4F:→ gna239:不是陣列大小的問題!! 05/11 23:49
5F:推 ke60811: 要不要用fscanf去讀讀看@@? 05/12 01:28
6F:推 world9918:你的文字檔要在30後面多一個換行... 05/19 23:11