Anfänger: problem bei Pointerausgabe (Wert auf den er zeigt)



  • Ich hab mich jetzt mal ein bißchen in pointer einglesen und rumexperimentiert. Aber das verstehe ich nicht:

    printf("%s\n",*string);
    

    Das liefert einen "Segmentation fault" wenn ich string per atoi in int umwandle, und einer int Variable zuweise, kann ich es ohne Probleme ausgeben.

    Wäre nett wenn mich jemand aufklären könnte
    Gruß HiFish



  • Wie schaut denn dein Programm dazu aus?



  • while(feof(fp)==0 )                   
    {                                                 
    
              fgets(rdy,100,fp);                      
              rpoint=strstr(rdy," R ");                  
              cnt_ges++;
    
              if(rpoint!=NULL)                                  
              {
                                    getpids(rdy,string);
                                    l=atoi(string);
                                    printf("%d\n",l);
                                    printf("%s\n",*string);
                                    cnt_run++;
              }
               l++;                                   
               rpoint=NULL;                            
    }
    
    void getpids(char *fpoint,char *point)
    {
            int i=0;
            for(i=0;i<6;i++)
            {
                    *point=*fpoint;
                    point++;
                    fpoint++;
            }
    }
    

    das is (der gekürzte aber relevante) Code.



  • versuch's mal mit "printf("%s",string);" (ohne Dereferenzierung - das macht printf() schon selber) - aktuell übergibst du das erste Zeichen deines Strings und versuchst es als Adresse eines char[]-Bereiches zu interpretieren.

    PS: statt getpids() solltest du dir mal memcpy ansehen 😉



  • ja so gehts dachte er gibt dann die Adresse aus -.- danke



  • Hast du schon probiert den Stern vor string einfach wegzulassen.

    edit: zu spät



  • HiFish schrieb:

    ja so gehts dachte er gibt dann die Adresse aus -.- danke

    Nein, an die Adresse kommst du mit &.



  • CStoll schrieb:

    HiFish schrieb:

    ja so gehts dachte er gibt dann die Adresse aus -.- danke

    Nein, an die Adresse kommst du mit &.

    Im Allgemeinen schon, das war hier aber nicht gefragt. An printf wird schon die Adresse übergeben, die Frage ist, was macht printf damit. Bei %s gibt es die Zeichenkette ab dieser Adresse aus, und bei %p gibt es die Adresse selbst aus.


Anmelden zum Antworten