Caracteres " (comillas dobles) en C

Resuelto
mano9 Mensajes publicados 32 Estado Miembro -  
fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   -
Hola,
Estoy haciendo un trabajo en el que necesito asignar la comilla doble (") a una variable de tipo cadena (Es la única forma de hacer lo que quiero). Pero desde hace 2 días lo he intentado todo en vano. En realidad, esto es:

char machaine[5];
machaine = "SC CREATE " "";
Siempre hay errores, no sé cómo usar " como carácter.
Ayúdame por favor, mi proyecto es para mañana y solo me queda eso para terminarlo.

Muy cordialmente
Configuración: Windows XP Internet Explorer 7.0

4 respuestas

  1. fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847
     
    Hola,
    Tres errores en tu código.
    1/ El tamaño de tu cadena es demasiado pequeño para contener "SC CREATE". (10 caracteres como mínimo, puedes poner más para estar tranquilo).
    2/ machaine = "SC CREATE " ""; Está prohibido hacer eso. Debes usar la función strncpy para realizar la copia de la cadena. Por ejemplo:
     strncpy(machaine,"SC CREATE",sizeof machaine); machaine[sizeof machaine - 1]='\0'; //para colocar el \0 final. 

    3/No comillas en la cadena. O entonces hay que escapar con una barra invertida. Por ejemplo: "SC CREATE\" "

    Saludos
    --

    Google is your friend
    1
    1. KéKeCest ??
       
      Hola Fiddy, Me permito hacerte esta pequeña corrección sobre la función strncpy(): char *strncpy(char *cible, const char *source, size_t longueur) > Copia como máximo longueur caracteres de source en cible rellenando con caracteres nulos si taille cible > taille source. De lo contrario, en su caso podría simplemente usar la antigua función strcpy(). Que tengas un buen día.
      0
    2. fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847 > KéKeCest ??
       
      No entiendo por qué me reprendes. ¿Qué es lo que no le gustó de mi código?

      En su caso, alguien podría simplemente usar la vieja función strcpy().
      Sí, pero cuidado con el desbordamiento de búfer.
      --

      Google is your friend
      0
    3. loupius > KéKeCest ??
       
      Slt KéKeCest ?? .

      Me permito esta pequeña corrección sobre la función strncpy() :

      char *strncpy(char *cible, const char *source, size_t longueur)
      > Copie au maximum longueur caractères de source dans cible en complétant par des caractères de code nul si taille cible > taille source.


      No, la respuesta correcta es:
      Copie au maximum longueur caractères de source dans cible en complétant par des caractères de code nul si longueur > taille source.

      Bonne journée.
      0
    4. KéKeCest ?? > loupius
       
      Hola,

      Diría que sí "a priori" - habría que comparar nuestras fuentes como justificaciones.

      Saludos.
      0
    5. KéKeCest ?? > fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención  
       
      Hola,

      strncpy(machaine,"SC CREATE",sizeof (machaine));

      No no así, parece OK (:>).

      Crldt.
      0
  2. mano9 Mensajes publicados 32 Estado Miembro
     
    Gracias de antemano por la respuesta.

    1 Para el tamaño ya está bien, no cometí ese error

    2 En mi "sc create" , justamente necesito poner la comilla doble (la penúltima) como carácter
    en la cadena.

    3 no quiero poner " " , sino "

    POR FAVOR espero su respuesta
    0
    1. fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847
       
      1 En cuanto al tamaño está bien, no cometí ese error
      Sin embargo, el ejemplo que diste contiene ese error.

      2 En mi “sc create ”, justamente necesito poner la comilla doble (la penúltima) como carácter en la cadena.
      Sí, ya lo entendí, y por eso te digo que hay que escaparla con un backslash, de lo contrario no funcionará. Relee mi ejemplo del post 1 para saber cómo hacerlo.

      3 no quiero poner “ ”, sino más bien “
      En C, la cadena está delimitada por dos apóstrofos. Pero esos apóstrofos no forman parte de la cadena en sí. Es solo para ayudar al compilador a entender de qué se trata.
      --

      Google is your friend
      0
  3. mano9 Mensajes publicados 32 Estado Miembro
     
    Muchas gracias. Voy a probármelo de inmediato.
    0
  4. tartALAfraise
     
    hola

    solo quería aclarar que tu doble comilla es en realidad "double quote"
    quote es "guillemets" en el idioma de Shakespeare (de ahí la cita = quotation)
    el doble apareció en las aulas de enseñanza (anglófonas) de informática donde fue necesario hacer entender la diferencia (en programación) entre apostrofo y comilla haciendo hincapié en el número de apóstrofos a dibujar (single o double).
    Recuerdo que el público de estas clases (todas las lenguas juntas) habitualmente no está versado en el conocimiento de la lengua ni de su formalización (de ahí el uso de vocabulario simplificado o incluso rudimentario para explicar algo así como su dificultad para formular por escrito una descripción de un funcionamiento o un problema en un lenguaje comprensible por sus pares)
    0