我有一个特定格式的数据集,我想用C读取,也可以用某种格式打印。以下是我在文本文件中的数据格式:
sample[0][0]=1; sample[0][1]=3;
sample[1][0]=2; sample[1][1]=4;
sample[2][0]=3; sample[2][1]=5;
我希望阅读此内容并返回
(*inputs)[0][0] = 1; (*outputs)[0]=3;
(*inputs)[1][0] = 2; (*outputs)[1]=4;
(*inputs)[2][0] = 3; (*outputs)[2]=5;
我能够编写一个代码,它将以下列格式读取我的文件:
1 3
2 4
3 5
这是我的代码:
int main() {
FILE *samples;
samples = fopen ("peaks.txt","r");
int arr[10][2];
int i;
int j;
for (i=0; i<10; i++) {
for (j=0; j<2; j++) {
fscanf(samples, "%d, ", &arr[i][j]);
printf("int = %d\t", arr[i][j]);
}
printf("\n");
}
}
如何修改此代码以阅读上述格式?谢谢。
答案 0 :(得分:0)
您可以阅读,例如第一行数据
fscanf(filein, "sample[0][0]=%d; sample[0][1]=%d;", &arr[0][0], &arr[0][1]);
但它非常脆弱,因为如果输入文件不完全那么你会得到不可预测的行为
你可以用
打印出来printf("(*inputs)[0][0] = %d; (*outputs)[0]=%d;", arr[0][0], arr[0][1]);
但可能我的打印声明错误,因为我不确切地知道您希望代码做什么。
现在有很多数据......
新版本...更简单...... D&#39;哦!
int a,b;
for (i=0; i<10; i++) {
for (j=0; j<2; j++) {
fscanf(samples, "sample[%d][%d]=\%d;", &a, &b, &arr[i][j]);
printf("int = %d\t", arr[i][j]);
}
printf("\n");
}
所以现在你从样本中读取a
和b
的数字值 - 但是后来没有使用a
和b
的这些值 - 尽管要编写一个好的程序,您可以检查a
和b
的值是否等于i
和j
。
旧的不工作版本
char* string_input[100]; // we need this to get the right format for scanf...
for (i=0; i<10; i++) {
for (j=0; j<2; j++) {
sprintf(string_input, "sample[%d][%d]=\%d;", i, j)
fscanf(samples, string_input, &arr[i][j]);
printf("int = %d\t", arr[i][j]);
}
printf("\n");
}
所以这样做是为了让泰勒制作的字符串适合逐行读取数据......
例如,如果i=8
和j=1
,那么string_input
将是sample[8][1]=%d;