hilfe: datei einlesen und versenden



  • Hallo

    Ich möchte aus einer .txt Datei einlesen und anschießend jede Zeile der Datei einzeln als Winpopup versenden. Wenn ich eine .txt Datei mit einem durchgehenden Text über mehrere Zeilen erstelle wird bisher der gesamte Text (über mehrere Zeilen hinweg) gesendet, wenn ich aber nur kurze Wörter in jede Zeile schreibe
    wird immer nur das letzte Wort, in der untersten Zeile gesendet.

    Was mache ich falsch:

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

    int main ()
    {
    int auswahl;
    char name[10];
    int atexit;
    const char *const farbe2 = "\033[0;41;37m";
    const char *const normal = "\033[0m";
    char speziale1[256];
    char speziale2[256];
    char speziale_beide[256];
    char daten[256];

    ...

    else if(auswahl == 2)
    {
    FILE *datei;
    datei = fopen("nachrichten.txt","r");

    if(datei == NULL)
    {
    printf("\n\n%sKonnte Datei nicht finden. Bitte fuegen sie die Datei nachrichten.txt ein und starten sie anschießend neu. %s\n\n", farbe2, normal);
    exit(atexit);
    }

    while( fgets(daten, sizeof(daten), datei) != 0)
    {
    fputs(daten, stdout);
    sprintf(speziale1, "| smbclient -M %s ", name);
    sprintf(speziale2, "echo %s ", daten);
    strcat(speziale2, speziale1);
    system(speziale2);
    }

    }

    return 0;
    }

    danke saibo



  • Das könnte am fgets liegen, und der Behandlung von eol-characters.

    Kann es sein das der lange Text keinen Zeilenumbruch beinhaltet, und die
    kurzen Texte vielleicht den falschen (UNIX \lf , PC \cr/\lf"?

    😃



  • wie meinst du müsste es genau aussehen. weil soweit ich weiß verwendet man fgets zum zeilenweisen auslesen aus dateien.

    sAiBo



  • in der PC-Welt müssen die Dateien am ende einer ASCII-Zeile eine cr und eine lf haben
    In de Unix welt dürfen sie am Ende nur ein lf haben



  • PAD schrieb:

    in der PC-Welt müssen die Dateien am ende einer ASCII-Zeile eine cr und eine lf haben
    In de Unix welt dürfen sie am Ende nur ein lf haben

    So? Muss das so sein??

    Also ich habe unter Windows (= PC-Welt 😕 ) immer nur mit \n gearbeitet in meinen Programmen und es funktionierte problemlos. Nur bei Programmen, wie Notepad gabs Probleme, da dieser unbedingt ein \r zusätzlich wollte. Das war aber auch nur ein Darstellungsproblem.

    Solange also zumindest \n als Zeilenumbrüche verwendet werden, sollte es keine Probleme geben (außer unter MAC; da wird, soviel ich noch weiß, nur \r als Zeilenumbruch verwendet).

    @sAiBo
    Bist du dir sicher, dass auch Zeilenumbruche wirklich drin sind. Manche Programme machen ja automatische Zeilenumbrüche, allerdings sind das nur visuelle Zeilenumbrüche. In die Datei selbst werden diese nicht geschrieben.



  • @AJ Es muss nicht so sein, ist aber usus, Bei selbstdefinierten Dateien kann ich machen was ich will.

    Es ist aber so wenn ich auf eiem PC fopen mit "w+t" benutze und in die die Datei mit fprintf(..."\n"..)
    das dann in der Datei "\r\n" steht und somit ist das leider eine de-facto standard und problemerzeuger



  • Stimmt ein Problem stellt es meistens dar. Allerdings kenne ich das nicht so, dass einfach aus einem \n ein \r\n gemacht wird. Da muss normalerweise der Entwickler schon selber drauf achten.


Anmelden zum Antworten