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