作者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