Zeiger als Rückgabewert Problem



  • hi

    habe folgenden Code erzeugt damit wollte ich die Informationen vom /proc/meminfo (unter Linux) herausholen um sie später weiterverarbeiten zu können.
    Leider wird da irgendwo was vermurkst mind. kommt in der main nichts vernüftiges raus. Allerdings in der sys_mem Funktion kommen die richtigen Werte. 😕

    #include <stdio.h>
    #include <string.h>
    
    FILE* stream;
    
    char *cutstring (char *stream_buf, int xpos)
    {
    int i;
    char *cutstring;
    
    cutstring = strtok(stream_buf, " "); 
    
     for (i=0; i<xpos; i++)
      { 
       cutstring = strtok(NULL, " ");  
      }
    return cutstring;
    }
    
    char *sys_mem(char *sys)
    {
    char stream_buf[50]; 
    
    stream = fopen("/proc/meminfo", "r"); 
    
     while (fgets(stream_buf, sizeof(stream_buf), stream) != NULL)
      {							       
        if (!strncmp(stream_buf, "MemTotal:", 9)   && !strcmp(sys, "MemTotal"))  return (cutstring(stream_buf,1));
        if (!strncmp(stream_buf, "MemFree:", 8)    && !strcmp(sys, "MemFree"))   return (cutstring(stream_buf,1));
        if (!strncmp(stream_buf, "SwapTotal:", 10) && !strcmp(sys, "SwapTotal")) return (cutstring(stream_buf,1));
        if (!strncmp(stream_buf, "SwapFree:", 9)   && !strcmp(sys, "SwapFree"))  return (cutstring(stream_buf,1));
      }
    
    }
    
    int main(int argc, char **argv)
    {
    printf("%s\n",sys_mem("MemTotal"));
    return 0;
    }
    

    P.S.: Wer vielleicht eine bessere Idee hat Informationen aus /proc/meminfo herauszuholen immer her damit 😃

    Gruss
    com



  • char *sys_mem(char *sys)
    {
    char stream_buf[50];
    

    mach das stream_buf static...



  • hmm na toll was für ein Fehler. 🤡
    Danke Spk101 für deine Hilfe.

    MFG
    com


Anmelden zum Antworten