Se supone que debo responder una pregunta de tarea para una de mis clases. Específicamente, se supone que debo decir si ciertas matrices en C se consideran cadenas o no. Basado en este artículo ( https://www.geeksforgeeks.org/strings-in-c-2/ ) Sé que las cadenas son una serie de caracteres con el terminador nulo al final.
Mi bloqueo principal es una parte de la pregunta que se hace sobre una matriz que se ve así:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
Obviamente, se trata de una serie de caracteres con un carácter de terminación nulo al final. Sin embargo, ¿todavía se considera una cadena ya que también tiene un carácter de terminación nulo en el medio? ¿Cómo afectará eso a la cuerda?
EDITAR: Basado en comentarios, he proporcionado la redacción real de la pregunta:
"¿Cuál de las siguientes matrices puede considerarse" cadenas "con el propósito de usarlas como argumentos para strcpy (), strncpy (), strcmp (), strncmp () y funciones de cadena similares (indicar todas las aplicaciones)?
EDITAR: envié un correo electrónico a mi profesor al respecto ya que la pregunta parecía ambiguamente redactada (como señalaron varias personas). Si alguien tiene curiosidad, me dijo "Sí, es una cadena. La clave es que hay un carácter nulo. Pero, por supuesto, eso afectará cualquier operación de cadena; la cadena termina en el carácter nulo".
strcmp()
. Si se puede usar como argumento para mutar funciones de cadena depende de factores adicionales que no se proporcionan.
c1
es mutable, por lo que no veo por qué no podría ser un argumento de destino válido strcpy
o similar, a menos que no sea lo suficientemente grande como para acomodar la cadena de origen. Eso no haría que no sea una cadena, simplemente no una adecuada para un propósito determinado.
c1
satisfaría los requisitos básicos para los argumentos de cadena para todas las funciones de cadena (estrechas) de la biblioteca estándar, incluidas todas aquellas específicamente nombradas, pero el comportamiento podría no ser lo que la persona que llama espera o desea (incluso ignorando los comportamientos indefinidos que podrían surgir).
char
. Cualquier tipo de personaje servirá.
"CS"
con algunos bytes de basura añadidos (en cuyo caso el carácter NUL final es irrelevante). Pero no es una cadena "en su conjunto". - Sin embargo, alimentar esto astrcpy
etc. no hará que su PC explote porque estas funciones "verán" solo la"CS"
parte.