[英]C fscanf jump values
我正在嘗試制作一個程序來讀取文件中的值並將其打印在屏幕上,現在部分是為了打印文件,我的程序最終跳過了一些值。 另一個問題,在這種情況下如何為v動態分配內存?
文件:
3 -1 1 3 1
2 2 1 -3.4
5 -1 -2 5 0 -3 1
碼:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define N 100
int main(){
float *v;
int i=0;
v=(float*)malloc(N*sizeof(float));
FILE* fp;
fp = fopen("entrada.txt","rt");
if (fp == NULL) {
printf("Erro na abertura do arquivo!\n");
exit(1); }
do{
fscanf(fp," %f",&v[i]);
printf("v[%d] = [%f]\n",i,v[i]);
i++;
}
while ((fscanf(fp," %f",&v[i])) != EOF);
int fclose (FILE* fp);
system("pause");
return 0;
}
結果:
v[0] = [3.00000]
v[1] = [1.00000]
v[2] = [1.00000]
v[3] = [2.00000]
v[4] = [-3.00000]
v[5] = [-1.00000]
v[6] = [5.00000]
v[7] = [-3.00000]
v[8] = [1.00000]
改成
while ((fscanf(fp," %f",&v[i])) != EOF){
printf("v[%d] = [%f]\n",i,v[i]);
i++;
}
您正在迭代中進行兩次文件讀取,請在以下時間內更改條件:
while ((fscanf(fp," %f",&v[i])) != EOF);
至:
while(!feof(fp));
這樣可以避免值跳過問題。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.