Surse de erori frecvent întâlnite în programe C: Caractere și siruri ------------------- - Constantele caracter se reprezintă intre ghilimele simple: 'a' - Constantele șir de caractere se reprezintă între ghilimele duble: "abc" - Caracterul 'a' NU este același lucru cu șirul "a": acesta consta de fapt din două caractere: 'a' și terminatorul '\0'. - Scrierea mai multor caractere intre ghilimele simple: 'abc' este o eroare (excepție face scrierea caracterelor '\n', '\t', etc.) - Un caracter are o valoare numerică (întreg pe 1 octet) egală cu indicele (poziția) sa în tabela de caractere, și poate fi folosit în orice expresie ca și un întreg. - Nu sunt definiți însă operatori (+, =, ==, etc.) pe șiruri de caractere. 'a' + 'b' este un număr întreg egal cu suma valorilor (pozițiilor în tabela de caractere) lui 'a' și 'b'. Nu este șirul "ab". - Caracterul care reprezintă cifra '0' NU are valoarea numerică zero, pentru că nu se află pe prima poziție (0) în tabela de caractere. - Lungimea unui șir de caractere, returnată de strlen() NU include și caracterul terminator '\0'. La declararea unui șir sau alocarea dinamică a memoriei pentru acesta trebuie inclus și un octet suplimentar pentru '\0'. - Funcțiile standard care lucrează cu șiruri (str..., printf/scanf, etc.) presupun că orice șir dat ca parametru e terminat cu '\0'. În cazul în care creați prin program un astfel de șir (prin copiere, modificare, etc.) nu uitați să terminați șirul cu '\0'. Tablouri -------- - Un tablou nu poate fi declarat fără a i se specifica dimensiunea. Deci nu se poate declara int a[]; . - Dimensiunea unui tablou trebuie să fie o CONSTANTĂ. Aceasta poate fi: a) un număr întreg: 12 double tab[12]; b) o constantă definită printr-o directivă de preprocesare: #define M 20 char b[M]; c) orice expresie conținând doar constante: int t[2*L+M+1]; /* cu L și M definite ca mai sus */ - Un tablou are exact numărul de elemente cu care e declarat, și NU este terminat cu sau urmat de un element 0 suplimentar. Dacă însă tabloul este o variabilă globală, și este inițializat cu mai puține elemente decât a fost declarat, restul elementelor *din* tablou sunt inițializate cu zero. Doar o *constantă* șir de caractere este terminată cu un caracter '\0' care urmează caracterelor precizate între ghilimele duble. - Numerotarea elementelor într-un tablou începe de la zero. În concluzie, parcurgerea unui tablou t de lungime l se face cu un ciclu de genul for (i=0; i