[英]How can I read separate numbers/lines from a .txt and input them to 2 different arrays
我正在嘗試編寫一個程序,該程序從.txt中讀取行並將其輸入到2個不同的數組中。
到目前為止,我有這個:
#include <stdio.h>
int main() {
FILE * ifp = fopen("input.txt","r");
FILE * ofp = fopen ("output.txt", "w");
int participants = 0, i;
char name [10];
float grade [10];
float perc [10];
fscanf(ifp, "%d", &participants);
for (i=1; i<participants; i++) {
fscanf(ifp, "%s", &name);
fscanf(ifp, "%f", &grade);
}
printf( "%d\n", participants);
printf( "%s\n", name);
printf( "%f\n", grade);
fclose(ifp);
fclose(ofp);
return 0;
}
我要閱讀的txt是:
2
Optimus
45 90
30 60
25 30
50 70
Megatron
5 6
7 9
3 4
8 10
我的問題是,它選擇了前2行,但是到數字時停止了。 我試圖將名稱放入一個數組中,並將所有數字成對放入另一個數組中。 現在,我只是想檢查一下是否要拾取數組中的數字,但沒有拾取全部數字。
這是我得到的輸出:
2
Optimus
0.000000
有任何想法嗎?
編輯
經過一些更改后,這是我的新代碼:
#include <stdio.h>
int main() {
FILE * ifp = fopen("input.txt","r");
FILE * ofp = fopen ("output.txt", "w");
int participants = 0, i , j;
char name [10];
int grade [26];
float perc [26];
fscanf(ifp, "%d", &participants);
for (i=1; i<participants; i++) {
fscanf(ifp, " %s", name);
fscanf(ifp, " %d", grade);
}
printf( "%d\n", participants);
printf( "%s\n", name);
printf( "%d\n", grade[0]);
fclose(ifp);
fclose(ofp);
return 0;
}
我的新輸出是:
2
Optimus
45
編輯2
以后我需要對這些數字進行的操作是,將第一個數字除以同一行中的第二個數字,再乘以10,然后根據該數字顯示“ *”。 因此它將像這樣打印出來:
Optimus
+: *****
-: *****
*: ********
/: *******
Megatron
+: ********
-: *******
*: *******
/: ********
“ +”是名稱下的第一行。 “-”是該名稱下的第二行。 “ *”代表第三個。 “ /”代表第四個。
這是您的主要問題:
printf( "%f\n", grade);
您正在嘗試將指針打印為浮點數。 您想要grade[0]
。
在這一行:
fscanf(ifp, "%f", &grade);
這將起作用,但這是不正確的。 它應該是&grade[0]
或僅僅是plain grade
。
當然,在最終版本中,您需要調整數組下標。 您還需要為該名稱分配更多的數組-您目前只能存儲一個。
要讀入數據,您需要進行很多更改。 您可以將grade
聲明為grade[10][8]
(假設最多10個參與者),並將8個整數中的每一個存儲在數組中。 這樣的循環將對其進行處理:
for (i = 0; i < participants; i++) {
fscanf(ifp, "%s", name); // read the name (you need to fix this)
for (j = 0; j < 8; j++) {
fscanf(ifp, "%d", &grade[i][j]); // store each number
}
}
name
和grade
是數組-變量的地址對於數組是隱式的。 因此,地址運算符不應用於這些變量。
fscanf(ifp, "%s", name);
fscanf(ifp, "%f", grade);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.