我试图将文件中的整数和浮点数存储到数组中。我不知道为什么它没有阅读价值观。它只是让我全部为0。我尝试使用不同的.txt文件(格式相同)但我得到了相同的结果。我认为这会起作用,但我无法弄清楚为什么它不会工作。这就是我目前所拥有的:
int main(int argc, char *argv[]){
struct TData{
int MinIndex,MaxIndex,Points;
float *pValue;
} Input[2],Output;
FILE *fp;
char ch;
int i,*values;
int lines=0;
fp = fopen(argv[1],"r");
if(fp == NULL){
printf("dont do anything\n");
}
else{
while(!feof (fp)){
ch = fgetc(fp);
if(ch == '\n'){
lines++;
}
}
values = malloc(sizeof(int) * (lines));
Input[0].pValue = malloc(sizeof(float) * (lines));
for(i=0;i<lines;i++){
fscanf(fp, "%d %f",&values[i],&Input[0].pValue[i]);
printf("%d %f\n\n",values[i],Input[0].pValue[i]);
}
}
该文件包含的内容:
3 3.0000000
2 2.0000000
1 1.0000000
我得到的输出:
0 0.0000000
0 0.0000000
0 0.0000000
答案 0 :(得分:0)
这是一个显示如何阅读文件的基本示例。
#include <stdio.h>
int main(int argc, char *argv[]){
FILE *fp;
int ivalue;
float fvalue;
if(argc < 2) {
return 1;
}
fp = fopen(argv[1], "r");
if(fp == NULL) {
return 1;
}
while(fscanf(fp, "%d%f", &ivalue, &fvalue) == 2) {
printf("%-5d %9f\n", ivalue, fvalue);
}
fclose(fp);
return 0;
}
节目输出
3 3.000000 2 2.000000 1 1.000000
请注意,fscanf
格式说明符%d
和%f
都会忽略任何空格,因此在这种情况下,无需查找换行符。