prob mitz fprintf
-
Hi leutz,
ich habe folgendes prob mit fprintf:
wenn ich fprintf(stdout,"%s\n",info[1]);
oder fprintf(stdout,"%s\n",info[i]); in einer Schleifeaufrufe bekomme ich die Fehlermeldung Speciherzugriffsfehler.
Das array info hat 5 inhalte, deshalb ich es in der header datei mit char info[5] initialisiert.
in meiner main funktion werden die werte dem array zugewiesen, sobald ich aber dann die funktion usage in meinem prog. aufrufe bekomme ich die obigen fehlermeldungen.
Wenn ich aber fprintf(stdout, "blabla"); aufrufe gehts.
woran liegt das?
-
Willst du ein Array von 5 Strings oder von 5 Zeichen?
-
das info array:
char info[5]; int main(int argc, char *argv[]) { info[0] = (char)"-i IP-Adr. der Dbox"; info[1] = (char)"-p Port default 80"; info[2] = (char)"-vPid Video Process id"; info[3] = (char)"-aPid Audio Process id"; info[4] = (char)"-o Stream filename"; info[5] = (char)"-h Hilfe"; }
-
So wird das nix!
In deinem Beispiel reservierst du ein Chararray mit Platz für 5 Zeichen.
Ausserdem kann man Strings nicht mit = zuweisen, sowas erledigt strcpy.
Für dein Vorhaben benötigst du ein 2 dimensionales char Array mit
Zeilenhöhe 5
und
Spaltenbreite Anzahl der Zeichen des längsten Satzes + '\0'!Ein Beispiel soll das verdeutlichen!
#include <stdio.h> #include <string.h> int main(void) { char matrix[5][6]; int i; strcpy(matrix[0],"one"); strcpy(matrix[1],"two"); strcpy(matrix[2],"three"); strcpy(matrix[3],"four"); strcpy(matrix[4],"five"); for (i = 0; i < 5; i++) fprintf(stdout,"%s\n", matrix[i]); return 0; }
Lies dir am besten nochmal ein Tut zu diesem Thema durch!
-
Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
so muß es aussehen:
char *info[5]; int main(int argc, char *argv[]) { info[0] = "-i IP-Adr. der Dbox"; info[1] = "-p Port default 80"; info[2] = "-vPid Video Process id"; info[3] = "-aPid Audio Process id"; info[4] = "-o Stream filename"; info[5] = "-h Hilfe"; }
char info[5] reserviert nur ein einzelnes zeichen pro feld. merke: in c ist ein string ein char* und kein char
-
Konfusius schrieb:
so muß es aussehen:
char *info[5]; int main(int argc, char *argv[]) { info[0] = "-i IP-Adr. der Dbox"; info[1] = "-p Port default 80"; info[2] = "-vPid Video Process id"; info[3] = "-aPid Audio Process id"; info[4] = "-o Stream filename"; info[5] = "-h Hilfe"; }
char info[5] reserviert nur ein einzelnes zeichen pro feld. merke: in c ist ein string ein char* und kein char
eher so:
const char *info[6]; int main(int argc, char *argv[]) { info[0] = "-i IP-Adr. der Dbox"; info[1] = "-p Port default 80"; info[2] = "-vPid Video Process id"; info[3] = "-aPid Audio Process id"; info[4] = "-o Stream filename"; info[5] = "-h Hilfe"; }
-
nur, wenn wir hier in der c++-abteilung wären.
-
Konfusius schrieb:
nur, wenn wir hier in der c++-abteilung wären.
erklaere.
-
Konfusius schrieb:
nur, wenn wir hier in der c++-abteilung wären.
was meinst du denn damit? Was hat da C++ damit zu tun, und wir sind übringens im ANSI C Forum.
Das const ist vielleicht nicht notwenig, es gibt Compiler, die da nicht meckern, bzw. Warnungen ausgeben. Aber die 6 am "info[6]" ist notwenid, da es keine 5 sondern 6 Datensätze sind.
-
danke es funzt nu.