Skip to content

Instantly share code, notes, and snippets.

@phaya phaya/charorstring.c Secret
Last active Dec 24, 2015

Embed
What would you like to do?
Un pregunta que me planteó un compañero vuestro en clase ¿por qué el siguiente código no funciona correctamente? ¿y cómo se solucionaría? La solución que se espera debería imprimir dos veces el carácter a?
#include <stdio.h>
int main()
{
char c = 'a';
char s = "a";
printf("%c %c", c, s);
return 0;
}
@albert101

This comment has been minimized.

Copy link

albert101 commented Oct 3, 2013

El programa no funciona debido a que en la segunda variable char(s) la a esta puesta con dobles comillas, cuando tiene que ser con solo una comilla es cada lado, como el primero.Corrigiendo eso el programa deberia funcionar sin problemas.

@phaya

This comment has been minimized.

Copy link
Owner Author

phaya commented Oct 4, 2013

¡Muy bien! Ahora, os pido otra solución ¿cómo modificarías el código para que funcione con las siguientes restricciones: a) la inicialización de s tiene que ser con las dobles comillas: "a", b) no se puede modificar %c "%c? El resto se puede cambiar a voluntad.

@ArturoBlazquez

This comment has been minimized.

Copy link

ArturoBlazquez commented Oct 6, 2013

Se me han ocurrido dos soluciones:
La primera, haciendo un poco de trampas, sería después de inicializar s escribir: s=c;, y sin cambiar nada más.
La segunda sería cambiar el formato de s a una cadena de caracteres y luego en el printf mostrar s[0]

@phaya

This comment has been minimized.

Copy link
Owner Author

phaya commented Oct 6, 2013

¡Muy bien! Estaba pensando en la segunda solución, pero la primera que has dado también cumple con las restricciones :)

Las comillas dobles se utilizan para inicializar cadenas de caracteres, mientras que las comillas simples se reservan para caracteres. En el caso de declarar scomo una cadena (char s[] = "a") recordar que el tamaño que ocupa la variable es 2, ya que almacena también el \0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.