Devo responder a uma pergunta de lição de casa para uma das minhas aulas. Especificamente, devo dizer se certas matrizes em C são consideradas cadeias ou não. Com base neste artigo ( https://www.geeksforgeeks.org/strings-in-c-2/ ), eu sei que strings são uma matriz de caracteres com o terminador nulo no final.
Meu hangup principal é uma parte da pergunta que faz uma matriz que se parece com isso:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
Obviamente, essa é uma matriz de caracteres com um caractere final nulo no final. No entanto, ele ainda é considerado uma sequência, pois também possui um caractere final nulo no meio? Como isso afetará a string?
EDIT: Com base nos comentários, forneço a redação real da pergunta:
"Quais das matrizes a seguir podem ser consideradas" strings "para fins de usá-las como argumentos para funções strcpy (), strncpy (), strcmp (), strncmp () e strings similares (indicar todas as opções aplicáveis)?"
EDIT: Enviei um e-mail ao meu professor, pois a pergunta parecia ambígua (como várias pessoas apontaram). Se alguém estiver curioso, ele me disse: "Sim, é uma string. A chave é que existe um caractere nulo. Mas é claro que isso afetará qualquer operação de string; a string termina no caractere nulo".
strcmp()
. Se ele pode ser usado como argumento para modificar funções de string depende de fatores adicionais que não são fornecidos.
c1
é mutável, por isso não vejo por que não seria um argumento de destino válido strcpy
ou similar, a menos que não fosse grande o suficiente para acomodar a cadeia de origem. Isso não faria com que não fosse uma sequência, apenas não adequada para um determinado objetivo.
c1
satisfaria os requisitos básicos para argumentos de cadeia de caracteres para todas as funções de cadeia (estreita) da biblioteca padrão, incluindo todas as nomeadas especificamente, mas o comportamento pode não ser o que o chamador espera ou deseja (mesmo ignorando comportamentos indefinidos que podem ser desencadeados).
char
. Qualquer tipo de caractere serve .
"CS"
com alguns bytes de lixo anexados (nesse caso, o caractere NUL final é irrelevante). Mas não é uma string "como um todo". - No entanto, alimentá-lo comstrcpy
etc. não fará o seu PC explodir porque essas funções "verão" apenas a"CS"
parte.