string-ausgabe



  • liebe leute,

    ich versteh da was nicht:
    meine funktion gibt mir einen pointer zurück, der nach texteingabe in der funktion auf den richtigen wert (%d) zeigt, als string (%s) wird aber nichts ausgegeben.

    bitte um ratschläge,
    lg andreas

    hier der code:

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

    #define SUCCESS -17

    #define TRUE 1
    #define FALSE 0

    int return_value;
    int filename;
    int checkParameter(char** argv);
    int getfilename();
    char **configfile[100];

    int main(int argc, char** argv)
    {
    return_value = getfilename(configfile);

    printf("\n %d \n", *configfile);

    return return_value;
    }

    int getfilename(char **configfile)
    {
    char filename[100];

    printf("enter filename: ");

    fgets(filename, 100, stdin);

    printf("\nfilename: %d", filename);

    printf("\n------------------------------");

    *configfile = filename;

    return SUCCESS;
    }



  • filename existiert nichtmehr wenn deine Funktion returned da es sich um eine lokale variable handelt...

    Für was die globalen Variablen filename, configfile und return_value sind würd mich auch interessieren. Vor allem warum configfile ein Array aus hundert Pointern auf Pointer auf char ist 😉

    Lösung: Der Funktion getfilename() einen entsprechenden Buffer und dessen Länge übergeben.



  • die einfache art und weise funktioniert schonmal, das mit dem buffer muss ich mir ansehen.

    blutiger anfänger 🙂



  • char configfile[100];
    
    int main(int argc, char** argv)
    {
    return_value = getfilename(configfile);
    
    printf("\n %s \n", configfile);
    
    return return_value;
    }
    
    int getfilename(char *configfile)
    {
    printf("enter filename: ");
    
    fgets(configfile, 100, stdin);
    
    printf("\nfilename: %s", configfile);
    
    printf("\n------------------------------");
    
    return SUCCESS;
    }
    


  • Naja, ich würds z.B. so machen:

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    
    #define SUCCESS -17 
    
    int getfilename(char* configfile, size_t buffer_size) 
    { 
      puts("enter filename: "); 
    
      fgets(configfile, buffer_size, stdin);
    
      puts("\n------------------------------"); 
    
      return SUCCESS; 
    }
    
    int main(int argc, char** argv) 
    {
      char configfile[100];
      int return_value = getfilename(configfile, 100);
    
      printf("\n %s \n", configfile); 
    
      return return_value; 
    }
    

Anmelden zum Antworten