Retourner au contenu associé (entrée de forum : Chaine de caractère)
Posté par Cereal Killer le 19 mai 2006 à 14:16. En réponse au message Chaine de caractère. Évalué à 1.
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int ac, char **av) { char buf[BUFSIZ]; FILE *f_in; FILE *f_out[100]; int cpt=0, i; char *file, char_cpt[32]; f_in = fopen("in", "r"); file = strdup("out1"); f_out[cpt] = fopen(file, "w+"); while((fscanf(f_in, "%s", &buf)) != EOF) { fprintf(f_out[cpt], "%s", buf); fputc('\n', f_out[cpt]); if(strncmp(buf, "FIN", 3) == 0) { free(file); cpt++; file = malloc(sizeof(char) * strlen("out") + cpt); strcpy(file, "out"); snprintf(char_cpt, 32, "%d", cpt + 1); strcat(file, char_cpt); f_out[cpt] = fopen(file, "w+"); } } for(i=0;i<cpt;i++) fclose(f_out[i]); free(file); fclose(f_in); return 0; }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# ma solution
Posté par Cereal Killer . En réponse au message Chaine de caractère. Évalué à 1.
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int ac, char **av) { char buf[BUFSIZ]; FILE *f_in; FILE *f_out[100]; int cpt=0, i; char *file, char_cpt[32]; f_in = fopen("in", "r"); file = strdup("out1"); f_out[cpt] = fopen(file, "w+"); while((fscanf(f_in, "%s", &buf)) != EOF) { fprintf(f_out[cpt], "%s", buf); fputc('\n', f_out[cpt]); if(strncmp(buf, "FIN", 3) == 0) { free(file); cpt++; file = malloc(sizeof(char) * strlen("out") + cpt); strcpy(file, "out"); snprintf(char_cpt, 32, "%d", cpt + 1); strcat(file, char_cpt); f_out[cpt] = fopen(file, "w+"); } } for(i=0;i<cpt;i++) fclose(f_out[i]); free(file); fclose(f_in); return 0; }Ya surement moyen de faire mieux et plus commenté, mais ça a le merite de marcher ... toutes suggestions sont bienvenues