[英]how to correctly reading Integers and Floats from a file?
我正在尝试存储整数并从文件浮点到数组。 我不确定为什么不读值。 它只是一直给我全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
这是显示如何读取文件的基本示例。
#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
都忽略任何空格,因此在这种情况下,不必费心寻找换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.