所以我想说我必须在文中阅读
Bob 5 5 5
Sam 4 4 4
或
2 2 2乔
1 1 1拉里
为数字使用单独的2D数组,为名称使用其他数组。我该怎么做呢?
我考虑过至少使用第一种情况
char reading;
int test[MAX][LEN];//where max is some #define, does not matter
while (i<MAX && reading = fgetc(foo) !=EOF ){
if (j<LEN && reading != '\n){
fscanf(foo, "%d", test[i][j]);//i'm really not sure. sorry :(
j++;
}
i++;
}
你是否会在fscanf中使用%* c之类的东西,你如何检查新线? 我非常失去任何帮助,理解材料将不胜感激。
答案 0 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
#define LEN 3
int main(void){
int test[MAX][LEN]={0};
char name[MAX][64];
char linebuff[128];
FILE *foo;
int i,j,k;
foo=fopen("data.txt", "r");
for(i=0;i<MAX && NULL!=fgets(linebuff, sizeof(linebuff), foo);++i){
char *p, *endp;
j=0;
for(p=linebuff;NULL!=(p=strtok(p, " \t\n"));p=NULL){
int num;
num=strtol(p, &endp, 10);
if(*endp == '\0'){
if(j<LEN)
test[i][j++]=num;
} else {
strcpy(name[i], p);//unnecessary?
}
}
}
fclose(foo);
//check print
for(j=0;j<i;++j){
printf("%s ", name[j]);
for(k=0;k<LEN;++k)
printf("%d ", test[j][k]);
printf("\n");
}
return 0;
}