Verschiedene Infos in ne txt schreiben

Hallo!


Also um etwas in eine Datei zu schreiben würde sich eher fprintf anbieten. Das wird nach diesem Muster gemacht:

Code:
#include <stdio.h>

int main(int argc, char *arv[]) {
    FILE *datei;

    datei = fopen("Pfad_zu_deiner_Datei", "wr");
    if(NULL == datei) {
       fprintf(stderr, "Fehler beim Oeffnen ...\n");
       return EXIT_FAILURE;
    }

    /* Dann einfach das was du willst in die Datei schreiben (mit Schleife oder ohne) */
    fprintf(datei, "Name:\n", "%s", "\n\n", "Problem:\n", "%s", name , problem);

    /* Datei schliessen nicht vergessen */
    fclose(datei);
}

Nach diesem Prinzip läuft es ab. Wenn du mehr darüber wissen willst, dann kann ich dir nur diese Seite: http://www.galileo-press.de/openbook/c_von_a_bis_z/ wärmstens empfehlen. Da steht alles drin was du gebrauchen kannst.


Gruß Buba
 
strcpy akzeptiert aber nur 2 Parameter.
Das müsste dann bei dir wie folgt aussehen
Code:
strcpy(data,"Name:\n");
strcpy(data,name);
strcpy(data,"Problem \n\n");
strcpy(data,problem);
fprintf...
einfacher wäre in diesem Falle (wenn man nur in die Datei schreiben will)
Code:
fprintf(errlog,"Name:\n%s\nProblem\n\n%s\n",name,problem);
Das sollte auf jeden Fall gehen.
 
sry aber das will und will einfach nicht gehen. Oder ich mach immer das selbe falsch. :(
@Buba235: Danke für die Seite die ist wirklich super.

hier nochmals mein code
Code:
/*
  Name: Support.c
  Copyright: EDV Feller
  Author: Adrian Bertschi
  Date: 13.10.06 16:53
  Description: Hilfe um Supportfälle am  Tel. schnell erfassen zu können.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main (void){
    int neu=1, i=5;
    char name[20]="name", problem[70]="problem", an[20]="an";
    FILE *datei;
    while(i>1){
    system("cls");
    printf("HELPLINE\n\n");
    printf("MENU:\n");
    printf("1. Neu erfassen\n");
    printf("2. Beenden! \n");
    neu=getch();
    switch (neu){
           case '1':
           printf("Name:\n");
           scanf("%s", &name);
           printf("Problem:\n");
           scanf("%s", &problem);
           break;
           case '2':
           printf("Programm wird beended\n");
           for(i = 0; i < 10; i++){
               sleep(300);  
               printf(".");
           }
           return 0;
           break;
    datei = fopen ("log.log","wr");
    if(NULL == datei) {
    fprintf(stderr, "Fehler beim Oeffnen ...\n");
    return EXIT_FAILURE;
    }
    fprintf (datei, "________________\nName:\n", "%s", "\n\n", "Problem:\n\n________________\n", "%s", name , problem);
    fclose(datei);
    }
    }
}

thx fürs anschauen ^^
 
Code:
/*
  
    fprintf (datei, "________________\nName:\n", "%s", "\n\n", "Problem:\n\n________________\n", "%s", name , problem);
Nimm mal die vielen Kommata raus. nur name und problem als Parameter müssen durch Kommata getrannt werden.
Das sollte dann so aussehen
Code:
fprintf (datei, "________________\nName:\n%s\n\nProblem:\n\n________________\n%s",name , problem);
 
hmm geht immer noch nicht. Kann das nicht mal schnell einer bei sich testen? um zu sehen obs nicht nur bei mir nit geht? Wär sehr nett thx.

Danke für eure tolle Hilfe, irgendwie so mit Files in c hab ich noch voll Probs. :(
 
Versuch mal das File mit "at","a" zu öffnen denn ich weiß nicht ob "wr" eine gültige Kombination ist. Wenn man nur Text reinschreiben will empfehle ich "at"
 
hmm habs probiert geht aber immer noch nicht =( langsam verzweifle ich schon mein letstes prog wolllte und wollte nicht gehen :(
 
Ich hoffe ich habe dein Problem gefunden!
Du brichstt mit dem break die gesamten Ablauf (außer der while Schleife) ab;
Ändere mal den Teil hier.
Code:
           ....
           break;
    } //<<<- hier Klammer setzen
    datei = fopen ("log.log","wr");
    if(NULL == datei) {
    fprintf(stderr, "Fehler beim Oeffnen ...\n");
    return EXIT_FAILURE;
    } 
    fprintf ...
   //} <<< Diese muß weg
Mit einrücken nach Klammern wärs mir eher aufgefallen :eek:)
 
Zuletzt bearbeitet:
hi
thx, jetzt gehts....
eigentlich hätt ich auch selber drauf kommen können =( hab wohl den Wald vor lauter Bäume nicht mehr gesehen.

THX für die Super Hilfe hier

EDIT:
Etwas wäre aber noch:
Wenn ich bei Problem nun einen Längeren Satz schreibe, dann schreibt der nur das erste Wort ins log.log wie kann ich das ändern?
 
Zuletzt bearbeitet:
Das Problem liegt darin, daß <SPACE> als 0x00 angenommen wird, und die Strings ebenfalls nullterminiert sind. Ergo ist der String beim ersten Leerzeichen zu Ende.
Somit müßtest du die tatsächliche Länge des Feldes bestimmen.
 
Zurück