Puisque ce ne semble pas devoir, voici quelques exemples de code de la façon dont je le ferais. Je ne fais qu'allouer un énorme bloc de mémoire pour le fichier entier, puisque vous allez lire le tout de toute façon, mais si vous traitez des fichiers volumineux, il est généralement préférable de les traiter ligne par ligne.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// first, get the name of the file as an argument
if (argc != 2) {
printf("SYNTAX: %s <input file>\n", argv[0]);
return -1;
}
// open the file
FILE* fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("ERROR: couldn't open file\n");
return -2;
}
// seek to the end to get the length
// you may want to do some error-checking here
fseek(fp, 0, SEEK_END);
long length = ftell(fp);
// we need to seek back to the start so we can read from it
fseek(fp, 0, SEEK_SET);
// allocate a block of memory for this thing
// the +1 is for the nul-terminator
char* buffer = malloc((length + 1) * sizeof(char));
if (buffer == NULL) {
printf("ERROR: not enough memory to read file\n");
return -3;
}
// now for the meat. read in the file chunk by chunk till we're done
long offset = 0;
while (!feof(fp) && offset < length) {
printf("reading from offset %d...\n", offset);
offset += fread(buffer + offset, sizeof(char), length-offset, fp);
}
// buffer now contains your file
// but if we're going to print it, we should nul-terminate it
buffer[offset] = '\0';
printf("%s", buffer);
// always close your file pointer
fclose(fp);
return 0;
}
Ouf, ça fait longtemps que je n'ai pas écrit de code C. Espérons que les gens vont entrer avec des corrections utiles/avis de problèmes massifs. :)
Est-ce que ce sont les devoirs? Avez-vous essayé quelque chose que vous pouvez nous montrer? Avez-vous plus de détails à partager? – Cogwheel
Non, ce n'est pas les devoirs; Je me suis amusé (mes études sont dans le domaine des soins de santé) Je pensais lire les ficelles avec des fgets, puis les regrouper en une seule corde finale, mais je voulais juste savoir s'il y avait une façon plus efficace de le faire. Je vais l'essayer de toute façon, tout en lisant les réponses possibles :) – pwseo