strcmp gibt immer 1 zurück?
-
pixartist schrieb:
achsooo ich dachte es vergleicht den inhalt der strings -.- dann muss ich wohl ne funtion schreiben...
Er vergleicht ob die beiden strings identisch sind!
-
hm noch ne frage zu dem code...
wenn ich ne 2d array hab:
array[10][20]
wie kann ich dann die länge der ersten dimension abfragen?
weil strlen(array) geht nicht!
-
printf("%d\n", sizeof(array)/sizeof(*array));
-
curry-king schrieb:
printf("%d\n", sizeof(array)/sizeof(*array));
ja, ich will ja aber nur die beschriebene länge haben und nicht die gesamtlänge...deswegen ja auch strlen!
-
hihi
die ursache ist, daß scanf() das new-line mitliest!!! wenn du also "exit" eintippst, dann liefert dir scanf() "exit\n"!!!
die änderung von
scanf("%s",buf)
auf
scanf("%s\n",buf)
sollte das problem lösen
-
hab oben mist gebaut
es muß nicht
scanf("%s\n",buf)
lauten sondern natürlich
scanf("^[\n]",buf)
hach, ist mir das peinlich
aber besser du benutzt gets(buf). gets() (oder besser noch fgets()) lesen das new-line am ende nicht mit ein und sind auch viel einfacher zu verstehen als scanf()
-
mann, hab schon wieder mist gebaut
also das mit dem nl mitlesen hab ich mit fgets() verwechselt!!!
den mist den ich geschrieben habe sofort wieder vergessen!!!
-
Konfusius, hör auf, rumzuspammen.
Hast du deine Tipps überhaupt mal ausprobiert? Gleich zwei Fehler in einem billigen Formatstring...
und so wie ich hier gucke, scheinst du dich ja riesig über scanf() zu freuen und überall deinen Senf dazuzugeben..
-
pixartist schrieb:
hm noch ne frage zu dem code...
wenn ich ne 2d array hab:
array[10][20]
wie kann ich dann die länge der ersten dimension abfragen?
weil strlen(array) geht nicht!bitte helft mir!
ich meine natürlich die beschriebene länge
-
du meinst, du willst 10 zurückkriegen?
int main() { char foo[10][20]; printf("size of whole array: %d\n", sizeof(foo)); // -> 200 printf("size of second dimension: %d\n", sizeof(foo[0])); // -> 20 printf("size of first dimension: %d\n", sizeof(foo)/sizeof(foo[0])); // -> 10 return 0; }
beschriebene länge? also wieviele der strings beschrieben sind?
geht meines wissens nur mit schleife:int i, c = 0; for (i = 0; i < sizeof(foo)/sizeof(foo[0]); ++i) c += (foo[i][0] != '\0');
prüft, ob bei einem string die terminierende null gleich am anfang ist, wenn nicht wird c inkrementiert.