042
21.08.2006, 10:49 Uhr
0xdeadbeef
Gott (Operator)
|
Jetzt kommt doch alle mal wieder runter.
Also, der Reihe nach:
1.
war nie Standard und wird es aller Voraussicht nach auch nie sein, weder in C, noch in C++.
2. Beim einlesen eines Strings ist kein Adressoperator nötig, weil der String implizit in einen char-Pointer konvertibel ist. Code-Beispiel:
C++: |
#include <stdio.h>
void foo(char *s) { s[1] = 'a'; }
int main(void) { char bar[] = "Hello";
foo(bar); // Implizite Umwandlung von char[] nach char* puts(bar);
return 0; }
|
3. Der Rückgabewert von scanf ist die Anzahl der eingelesenen Parameter. Das wird benötigt, um Bogus-Eingaben abzufangen, z.B. wenn du zwei Zahlen erwartest und der User "eins zwei" eingibt.
C++: |
#include <stdio.h> #include <errno.h>
int main(void) { int x, y, check;
printf("Zwei Zahlen eingeben: "); check = scanf("%d %d", &x, &y);
if(check == 2) { printf("%d + %d = %d\n", x, y, x + y); } else { printf("Es wurde(n) nur %d Zahl(en) erkannt.\n", check); return EINVAL; }
return 0; }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |