Array Operationen



  • Hi,

    ich will folgendes bewerkstelligen:
    Ich will 2 Strings ausgeben,
    die ursprünglich aus 4 String bestehen.
    zB

    FILE *file;
    fopen("file.txt", "r");
    while(!feof(file)){
    char str1[] = "CONST ";
    char str2[256];
    fgets(pass, sizeof(pass),file);
    strcat(str1,str2);
    
    char str3[] = "CONST2 ";
    char str4[] = argv[1];
    strcat(str3,str4);
    
    fprintf(stdout, "%s\n",str1);
    fprintf(stdout, "%s\n",str3);
    }
    

    Ich habe ein ähnliches Konstrukt implementiert,
    ich habe es in dem Beispiel vereinfacht.
    Der Fehler is nun der, dass andere Zeichen ausgegeben werden,
    die nicht in der file.txt standen.
    Aufbau von file.txt

    String1
    String2
    

    Wer diesen Codeabschnitt nicht versteht
    wem es zu "komplex" sein sollte, der antwortet bitte nicht.
    🙂



  • fgets(pass, sizeof(pass),file);
    ist falsch :>
    ich meinte: fgets(str, sizeof(str),file);

    Ich hoffe ihr kommt nicht auf die Idee was ich
    programmiere 🙄



  • Annenheide2 schrieb:

    Ich hoffe ihr kommt nicht auf die Idee was ich
    programmiere 🙄

    Müll?



  • Annenheide2 schrieb:

    Wer diesen Codeabschnitt nicht versteht
    wem es zu "komplex" sein sollte, der antwortet bitte nicht.

    ich verstehe jedenfalls nicht, warum du str1 und str3 so kurz machst. aber vielleicht ist das ganze auch einfach nur zu komplex für mich.
    🙂



  • Da haben wir ja 2 ausgewiesene experten.

    Ich habe eine fachliche Frage gestellt
    und hätte gerne fachliche Antworten.

    Meinen letzten Satz habe ich formuliert
    damit Leute wie ihr wegbleibt.
    Anscheinend hat es nicht funktioniert.
    Meine Ausdrucksweise ist wohl zu "komplex" 🙂

    Ne mal im ernst, ich würde gerne wissen,
    wie ich dieses Problem lösen kann. :>



  • Annenheide2 schrieb:

    Meinen letzten Satz habe ich formuliert
    damit Leute wie ihr wegbleibt.

    dieses forum muss ja wirklich einen total schlechten ruf haben.
    🙂



  • Dein Programm kann nicht funktionieren, da dein Array zu klein ist. Aber hier mal eine Erläuterung der Parameter der Funktion strcat .

    Parameters

    destination
    Pointer to the destination array, which should contain a C string, and be large enough to contain the concatenated resulting string.

    source
    C string to be appended. This should not overlap destination.

    Und gegen das fett markierte verstößt du!

    Mal ein Beispiel für dich:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char dest[256]; // Destination
    	char src[64]; // Source
    
    	// Wenn du es mit char dest[] = "Mein Name ist "; machst, 
    	// dann ist dein Array zu klein! 
    
    	// Also ein Array anlegen und mit sprintf füllen...
    
    	sprintf(dest, "Mein Name ist ");
    
    	printf("Mein Name ist: ");
    
    	scanf("%s", src);
    
    	strcat(dest, src);
    
    	printf(dest);
    
    	return 0;
    }
    


  • Annenheide2 schrieb:

    Ich habe eine fachliche Frage gestellt

    Nö, Du hast ein Bierglas hingestellt, 'nen Zettel drangehängt "Ich hab' da reingespuckt" und bist aufs Klo gegangen. Fricky und ich haben nur druntergeschrieben "ich auch".

    Normalerweise kann man sich hier wirklich drauf verlassen, daß nach bestem Wissen und Gewissen geantwortet wird. Wenn Du so Rotzcode hinschotterst und gleich hinterherwirfst, daß man zu blöd ist, wenn man das nicht sofort checkt und besser gleich gar nicht antwortet, was erwartest Du?


Anmelden zum Antworten