[英]C-Programm reads a file and prints it out, but i get different outputs every time i compile
我有一個 C 程序,它讀取一個 .txt 文件,將每個浮點數保存在一個數組中,然后打印出該數組。
我的問題是,當我運行代碼時,有時輸出是正確的,有時一個數字是 0.00 而不是正確的數字。 它總是相同的數字。
我正在使用 macOS 和 VSC,但是當我像這樣在終端中編譯程序時遇到了同樣的問題:
gcc -o max maxOfFloats.c
./max
這是我的代碼:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <float.h>
int main(int argc, char *argv[]) {
float *ptr = malloc(9*sizeof(float));
FILE *fptr=fopen("zahlen.txt", "r");
char buffer[255];
int counter=0;
while (fgets(buffer, 255, fptr) != NULL) {
sscanf(buffer, "%f\n", ptr+counter*sizeof(float));
counter++;
}
fclose(fptr);
for (int i=0; i<9; i++){
printf("%.2f\n", *(ptr+i*sizeof(float)));
}
free(ptr);
return EXIT_SUCCESS;
}
這是 .txt 文件:
695.40
-3.45
3555.05
344.44
344444.00
34.44
343.44
3444.44
664.44
這是錯誤的輸出:
695.40
-3.45
3555.05
0.00 ← Wrong Number
344444.00
34.44
343.44
3444.44
664.44
謝謝人們
不要將索引乘以項目的大小; 指針會自動執行此操作,這就是為什么要鍵入它們。 您正在跳入未知的記憶水域(有時會跳過一個點,這就是為什么打印例程與填充例程看到的東西不同的原因)。 像這樣更換這些部件:
sscanf(buffer, "%f\n", &(ptr[counter]));
和
printf("%.2f\n", ptr[i]);
您應該會看到更一致的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.