, zresztą strdup nie ma w standardzie)
== i =
#define MAX 30; czemu to nie jest poprawne, choć często działa?
jak policzyć liczbę elementów inicjalizowanej tablicy czasu kompilacji (sizeof(tab)/sizeof(tab[0])
jak ustawić kursor, wczytać znak bez echa, wczytać znak bez czekania na Enter (zależy: (n)curses, conio, ...)
dlaczego poniższy program może się zakończyć błędem wykonania:
char s[MAX];
scanf("%s",s); /* Zakładam, że ta operacja wykona się prawidłowo, tzn. nie
nastąpi przepełnienie bufora s */
printf(s); /* Czemu ta operacja może się nie powieść, mimo że s jest prawidłowym napisem? */
(wskazówka: pierwszy parametr printf jest napisem formatującym)
Prawidłowa postać wypisywania napisu to oczywiście printf("%s",s);
czemu poniższy fragment zapewne spowoduje błąd wykonania:
char s[10];
strcpy(s,'a');
(wskazówka: 'a' i "a" to nie to samo)
czemu poniższy fragment jest bardzo poważnym błędem:
char *s;
strcpy(s, "Hell o!");
(wskazówka: przeczytaj opis strcpy, w szczególności znaczenie pierwszego parametru)
czemu poniższy fragment jest poważnym błędem:
char s[3];
strcpy(s, "Ala");
(wskazówka: ile bajtów wymaga zapamiętanie napisu o długości n?)
czemu poniższy fragment jest bardzo poważnym błędem:
int* p = malloc(sizeof(int) * 10);
if (p)
p++;
free(p);
(wskazówka: skąd free wie ile zwolnić pamięci?)
czemu poniższy fragment jest bardzo poważnym błędem:
int* p;
p = realloc(p, 10);
(wskazówka: którego bloku pamięci będzie dotyczyła operacja realloc?)