Teste seu entendimento sobre terminador nulo, strlen vs sizeof, strcmp e atribuição de strings.
char s[] = "Hello"; printf("%lu\n", sizeof(s));
'\0' (terminador nulo) no final.char s[] = "ABC"; printf("strlen=%lu, sizeof=%lu\n", strlen(s), sizeof(s));
strlen retorna o número de caracteres sem contar o '\0' → 3. sizeof retorna o tamanho em bytes incluindo o '\0' → 4.char a[] = "apple"; char b[] = "apple"; if (strcmp(a, b) == 0) { printf("same\n"); } else { printf("different\n"); }
strcmp retorna 0 quando as duas strings são iguais.== diretamente compararia endereços em vez de conteúdos, então em C você deve sempre usar strcmp para comparar strings.char s[10]; s = "Hello"; printf("%s\n", s);
=. Use strcpy(s, "Hello").char s[] = "Hello" no momento da declaração é inicialização, que é permitida. Inicialização e atribuição não são a mesma coisa.