J'essaie de créer un programme pour ouvrir un fichier appelé "write.txt". Si cela fonctionne? Parce qu'il ne renvoie rien. P> p>
4 Réponses :
Qu'attendez-vous qu'il "retour" - il ouvre un fichier, sur la plupart des plates-formes en créant une si elle n'existe pas. P>
Vous devriez probablement flose (FP) le fichier à la fin. P>
autre qu'une ancienne variante de Cependant, étant donné que vous ne vérifiez pas la valeur de retour de Je commencerais avec: p> Si vous êtes adontif que le fichier n'est pas en cours de création, mais le code ci-dessus indique qu'il est, Ensuite, vous pouvez être une victime de l'IDE redouté, travaille dans un répertoire différent de ce que vous pensez "Syndrome: -) P> Certains IDes (tels que Visual Studio) exécuteront réellement votre code pendant qu'ils sont dans un répertoire comme dans votre code pour voir où il fonctionne. c'est em> où un fichier sera créé si vous spécifiez une ligne de chemin relatif principal code>, il n'y a pas vraiment beaucoup em> mal avec ce code. Il devrait, sauver des erreurs, créer le fichier.
fopen code>, vous pouvez obtenir une erreur de sorte que vous ne le savez pas. p>
"write.txt" code>. Sinon, vous pouvez spécifier un chemin absolu pour vous assurer qu'il tente de le créer à un point spécifique du système de fichiers. P> P>
Je pense que les fonctions déclarées sans type de retour sont supposées renvoyer un int code> dans les anciennes versions du langage C. Ceci est pas b> vrai pour C ++; La fonction principale est requise b> renvoyer un
int code>.
Je pense que vous trouverez à partir de C99 que vous devriez retourner une INT explicitement. C89 / 90 autorisés par défaut.
C'est une bonne idée de fermer les fichiers que vous ouvrez; Il est correct de laisser des fichiers hérités (comme entrée standard et sortie standard) ouverte à la sortie.
Vous feriez mieux d'utiliser perror ("fichier non créé ok"); code> que le
printf () code>, puisqu'il doit imprimer une erreur lisible par l'utilisateur plutôt qu'un inscrits Numéro d'erreur.
Oui, je suis tout à fait d'accord, vous êtes i> mieux de faire cela. Cela n'a également rien à voir avec la question en tant que SE :-) Pensez-y en tant que code de soutien.
Je pense que vous devriez étudier plus de fondamentaux en C avant de commencer à essayer de travailler avec des fichiers. Un retour signifie que certaines données sont transmises au code d'appel de la fonction appelée. Dans ce cas, vous retournez 0 à la fin de votre programme. Vous n'avez rien fait avec votre pointeur de fichier, sauf causer un nouveau fichier à créer ... P>
Je sais. J'ai mangé ma question. Mais ce que je voulais dire, aucun fichier n'a été ouvert / créé. J'essaie de suivre K & R P160-161.
K & R est un outil horrible i> pour apprendre C, vous seriez mieux avec quelque chose d'un peu plus moderne.
Je pense que vous voulez imprimer le contenu du fichier write.txt. (Supposons qu'il contient des caractères).
#include <stdio.h> int main() { FILE *fp,char ch; fp=fopen("write.txt","r"); if(fp==NULL) { printf("Some problem in opening the file"); exit(0); } else { while((ch=fgetc(fp))!=EOF) { printf("%c",ch); } } fclose(fp); return 0; }
Le fichier est ouvert pour écrire, ne pas lire. En outre, votre printf n'inclut pas Erno afin que vous ne sachiez pas pourquoi i> l'Open a échoué. Utilisez strError ou Perror.
Il ne renvoie rien parce que vous avez un
retour 0; code> comme dernière déclaration? Ou voulez-vous dire que
fopen () code> retourne zéro?
Qu'attendez-vous que cela retourne? Que voulez-vous dire par retour, imprimé?
Désolé, je veux dire Fopen ne renvoie rien.
Il ne peut pas "ne rien retourner". Qu'est-ce qu'il retourne exactement dans votre cas?
Pardon. J'ai mangé mes mots. Je voulais dire qu'un fichier n'est pas créé ou ouvert.