CSVファイルから10行を読み込み、名前とグレードを分けたいプログラムに取り組んでいます。私はここに提供されたドキュメントを使用しましたReading values from CSV file into variablesCSVファイルから行を読み込み、値に分割する(sscanf SIGSEGV)
残念ながら、私のコードはsscanf
ステートメントでラインに来るときSIGSEGV
をスローします。私はと%f
の間の,
を削除しようとしましたが、その後は動作しますが、目的を破るグレードではなく名前のみが取得されます。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[10][30], names[10][20];
FILE *fp;
int i;
float grades[10];
fp = fopen("names.txt", "rt");
for (i = 0; i < 10; i++) {
fgets(str[i], 30, fp);
sscanf(str[i], "%[^,], %f", &names[i], grades[i]);
printf("%s ", names[i]);
printf("%f ", grades[i]);
};
}
これはcsvファイルの内容です:
Bob,8
Carla,7
Jack,5
Julie,3
Goncalo,9
Vera,6
Jesse,8
James,8
Francis,10
Monica,6
は、あなたが他のどの情報が必要かどうか尋ねることを躊躇しないでください、あなたの助けをいただき、ありがとうございます。
これは機能しましたが、アンパサンドはなぜ必要ないのですか?他のスレッドではそこにいましたか? – Casz146
私は、迅速な答えをありがとう! – Casz146