J'ai remarqué que fscanf
ne fonctionne pas avec les compilateurs C déterminé (Intel, Cray), donc je veux utiliser fgets
pour lire un fichier d'entrée simple qui contient des chaînes et des nombres entiersComment lire des fichiers avec des chaînes et des entiers en utilisant fgets
$cat input.txt
st 10 167 POP 456 244 NONE ENERGY
que je pouvais faire quelque chose comme ça
int main()
{
FILE *ptr_file;
char buf[1000];
ptr_file = fopen("input.txt", "r");
if (!ptr_file)
return 1;
for (int i = 0; i < 8; i++) {
fgets(buf, 1000, ptr_file);
printf("%s", buf);
}
fclose(ptr_file);
return 0;
}
pour lire le fichier, puis créer un switch case
soit stocker la valeur de buf
dans un integer
ou un string
. Ce n'est évidemment pas très efficace et je me demandais si quelqu'un avait une meilleure idée.
Le 'fgets' va obtenir votre entrée dans un tableau de caractères. Vous devrez toujours extraire les données du tableau de caractères. En C, vous pouvez utiliser 'sscanf' après' fgets'. –
Avez-vous une structure 'struct' pour contenir les valeurs associées? Ou utilisez-vous un ensemble de tableaux parallèles? Vous devez savoir ce que vous allez remplacer 'printf()' par - comment vous allez interpréter et stocker ce qui ressemble à 8 champs dans l'entrée pour un traitement ultérieur. –
@ThomasMatthews 'sscanf' semble fonctionner, mais' fscanf' échoue ... – Manolete