Skip to content

Instantly share code, notes, and snippets.

@phaya
Last active December 24, 2015 02:49
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save phaya/e500f6191bc4946971de to your computer and use it in GitHub Desktop.
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
Copy link

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
Copy link
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
Copy link

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
Copy link
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