frankx: Anfängerfrage zu Strings in C

Beitrag lesen

Hellihello

char **     // das verstehe ich nicht? Wozu steht das da?
              // Soll das der Typ (Rückgabewert) der Funktion sein?

Syntaktisch gesehen ja. Darüber habe ich mich auch gewundert. Also möchte frankx eigentlich einen Zeiger auf Zeiger auf char zurückgeben - im Prinzip ein Array aus Strings.
Das passt aber nicht so ganz mit der Arbeitsweise der Funktion zusammen, außerdem hat er ohnehin versäumt, ein Ergegbnis zurückzuliefern.

  
char **  
csvlinesplitting(char *line)  
{  
        int elemcounter;  
        elemcounter = 0;  
        int counter;  
        counter = 0;  
        char elements[5][120];  
        printf("Elements am Anfang: %s\n\n", elements);  
        while(*line != '\n') {  
                if (*line != ',') {  
                        elements[elemcounter][counter] = *line;  
                        elements[elemcounter][counter+1]=0;  
                        counter++;  
                }  
                else {  
                        printf("\n\nes ist ein komma da: %c - elementsinhalt ist : %s\n", *line, elements[elemcounter]);  
                        printf("lineinhalt ist : %s\n", line);  
                        counter=0;  
                        elemcounter++;  
                        elements[elemcounter+1][0]=0;  
                }  
                line++;  
  
        }  
        printf("\n\nENDE: %c - elementsinhalt ist : %s\n", *line, elements[elemcounter]);  
        return elements;  
}  

mault er

csv2.c:35: warning: return from incompatible pointer type
csv2.c:35: warning: function returns address of local variable

mach ich "return **elements";

csv2.c:35: warning: return makes pointer from integer without a cast

in main dann:

  
//init **var  
char **main_elements;  
// sollte die rückgabe von der Funktion csvlinesplitting übernehmen  
main_elements = csvlinesplitting(char *line);  

geht wohl analog zu JS oder PHP nicht, oder?

Dank und Gruß,

frankx

--
tryin to multitain  - Globus = Planet != Welt