Je dois trouver dans un fichier texte la ligne spécifique qui commence par un mot-clé et ensuite je dois analyser cette ligne pour extraire des informations. Je vais le clarifier par un exemple:Trouver une ligne dans un fichier et extraire des informations
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 5
model name : Pentium II (Deschutes)
stepping : 2
cpu MHz : 400.913520
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
c'est le fichier texte (/ proc/cpuinfo de Linux). Je dois écrire une fonction qui analyse le fichier jusqu'à ce qu'il trouve "nom du modèle:" et il doit ensuite stocker dans un tableau Array l'information "Pentium II (Deschutes)". C'est ce que je codé jusqu'à présent:
int get_cpu(char* info)
{
FILE *fp;
char buffer[1024];
size_t bytes_read;
char *match;
/* Read the entire contents of /proc/cpuinfo into the buffer. */
fp = fopen("/proc/cpuinfo", "r");
bytes_read = fread(buffer, 1, sizeof (buffer), fp);
fclose (fp);
/* Bail if read failed or if buffer isn't big enough. */
if (bytes_read == 0 || bytes_read == sizeof (buffer))
return 0;
/* NUL-terminate the text. */
buffer[bytes_read] == '\0';
/* Locate the line that starts with "model name". */
match = strstr(buffer, "model name");
if (match == NULL)
return 0;
/* copy the line */
strcpy(info, match);
}
il est dit que le tampon est toujours pas assez grand ......
"il est dit que le tampon n'est toujours pas assez grand". C'est parce que ce n'est pas assez grand. Exécutez simplement 'cat/proc/cpuinfo> output' manuellement et regardez la taille du fichier' output'. Que trouvez-vous? – kaylum
sur mon système c'est un très gros document ... Je devrais écrire un programme qui pourrait fonctionner sur tous les systèmes Linux – rugrag
@kaylum * utilisation inutile de cat * détecté \ * scnr \ * (encore +1) [explication: un simple 'cp' ferait si vous voulez examiner avec' ls' - il vaut mieux juste utiliser 'wc -c'] –