• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C] Selbstgeschriebene Funktion geht nicht

Status
Für weitere Antworten geschlossen.
G

Gelöschtes Mitglied 3007

Guest
Also ich habe volgende Datei.

88b26cce7e14cbf - NoPaste - Paste it here

Und eigentlich wollte ich mir eine Funktion schreiben mit der ich jeweils die Hintergrundfarbe und die textfarbe in meiner console ändern kann (Debian).

Allerdings bekomme ich wenn ich das compilieren will per gcc volgende Fehler

Code:
test.c: In function 'main':
test.c:17: error: invalid initializer
test.c:18: error: invalid initializer
test.c: In function 'backgroundcolor':
test.c:25: error: argument 'text' doesn't match prototype
test.c:4: error: prototype declaration
test.c:28: error: array type has incomplete element type
test.c:41: warning: assignment makes integer from pointer without a cast
test.c: In function 'textcolor':
test.c:46: error: argument 'text' doesn't match prototype
test.c:5: error: prototype declaration
test.c:49: error: array type has incomplete element type
test.c:62: warning: assignment makes integer from pointer without a cast
test.c:64:2: warning: no newline at end of file

Währe nett wenn mir jemand sagen kann wie ich diese behebe :) google hilft nähmlich irgendwie nur auf Russisch o_O
 
Werbung:
zu Zeile 5: du kannst
Code:
char txt[];
nicht schreiben, weil er ja nich weiss, wie groß das Array werden soll. Versuchs mal mit
Code:
char **txt;  //?oder char *txt;
, denn ein Array ist ja ein Pointer auf einen Pointer.

und da:
Code:
char txt[] = textcolor((int)z, say);
nimm mal das:
Code:
char txt[] = textcolor((int)z, *say);

In Z.41 meint der Compiler(der Recht hat, aber es nicht gscheit ausdrücken kann),
du würdest einen Pointer einfachso in eine Zahl umwandeln. Geht zwar, ist aber (in deinem Fall) wohl eher Schwachsinn.

Ich geb jetzt keine Garantie auf Richtigkeit, aber nach meinen Kenntnissen sollte das dann passen ;)

n1ob
 
Zuletzt bearbeitet:
Nein, der Variablenname ist bei einer einfachen Array ein Zeiger. Ein Zeiger auf einen Zeiger wäre dann für eine doppelte Array. I'm Sorry aber bei deinem Code sehe ich seltsame Dinge, z.B. probierst du Strings mit + zusammenzufügen, dass hat soweit ich weiss, noch nie (in C) funktioniert. (macht man mit strcat)

Edit: Du hast als Rückgabetyp char angegeben, obwohl du eigentlich den Pointer auf die char Array zurückgeben willst. (Jawohl, man muss denn Zeiger zurückgeben, wenn man ne Array zurückgeben will)

Edit2: Wieso haust du bei den Strings überall schon am Anfang das Nullzeichen rein?
 
Zuletzt bearbeitet:
Werbung:
Drakes das ist kein Terminierungs zeichen das ist \0... das was du da siehst ist \033 ;) Und \033[XX:1m ist eine style angabe für die Debian Konsole und mit \033[0m wird der style wieder beendet :)

Also es muss also in meinem fall nicht heißen "char funktion()" sondern "char* funktion"

strcat werde ich dann auch mal einbauen...

danke für die hilfe werd ich ausprobieren wenn ich wieder zuhause an meinem Debain rechner bin :)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben