Hola bueno como ya dije en otro post, estoy empezando a programar en C por lo tanto decidi hacer uno de esos programas "Hello world" pero de una forma un tanto diferente..
Aqui el codigo:
#include <stdio.h>
int main()
{
char hello[5];
char world[6];
printf("Como se dice \"hola\" en ingles?.\n");
scanf("%s",hello);
printf("Como se dice \"mundo\" en ingles?.\n");
scanf("%s",world);
printf("En ingles \"Hola mundo\" se dice %s %s!!.",&hello,&world);
}
Denme su opinion, ahora quiero codear otro, de forma diferente....
saludos
Jeje bien, pero no vale la pena que hagas otro distinto, son cosas basicas, ya lo entiendes asi que hace otra cosa, crea una calculadora que sume, reste, multiplique y divida, con un lindo menu.
Mirate esto antes que todo:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
Luego si haces la calculadora la pones aca preguntando tus dudas o para saber si quedo todo bien :P Saludos!
gracias por tomarte tiempo para ver el code :P....quiero hacer otro codigo pero es para "afilar mis garras"
por cierto gracias por el link
saludos
Hola! cuando compilaste el codigo debio haberte tirado un warning(sino lo hizo cambia de compilador). EL problema esta en hacer &hello y &world, esos "&" estan demas(mas adelante vas a entender que significaria)
Saludos
PD: para el otro post tenes la funcion atol
no, no tuve ningun tipo de problema compilando este programa, se muy bien de lo que estas hablando, pero funciona tambien si le pones el "&" a la variable dentro de scanf..
saludos
Cuando declaras el arreglo hello te olvidaste de dejar un espacio para el caracter nulo (\0). En este caso funciona lo de &hello y &world solo porque son arreglos.
Cita de: naderST en 24 Diciembre 2012, 23:28 PM
Cuando declaras el arreglo hello te olvidaste de dejar un espacio para el caracter nulo (\0). En este caso funciona lo de &hello y &world solo porque son arreglos.
a que te refieres con dejar un espacio para caracter nulo? a mi pobre entender este codigo debe funcionar bien con o sin "&"...explicate mas claramente.
saludos
* Al utilizar el operador "dirección de" (el '&') con un array el puntero resultante es (en tu caso) de tipo "char (*)[N]" mientras que scanf espera un puntero de tipo "char *". Tal vez funcione pero el tipo no es el esperado por la función.
* En C una cadena es una secuencia de caracteres seguida del carácter '\0', este no es parte de la cadena, la delimita. Por ello si quieres almacenar las cadenas "Hello" y "World" necesitas dos arrays con una capacidad de seis caracteres (en tu ejemplo el primer array solo puede almacenar cinco).
* Utilizas scanf con el especificador "%s", ello es igual de malo que utilizar gets ya que la función lee y almacena todos los caracteres que pueda. En su lugar debes utilizar "%Ns" donde N es el numero de caracteres (menos uno) que se puede almacenar en el array. El "menos uno" es para reservar espacio para el delimitador, el '\0'.
Un saludo
bien, gracias por corregir mi codigo...y tomarse el tiempo para leerlo acuerdense que soy novato xD
Citar
* Utilizas scanf con el especificador "%s", ello es igual de malo que utilizar gets ya que la función lee y almacena todos los caracteres que pueda. En su lugar debes utilizar "%Ns" donde N es el numero de caracteres (menos uno) que se puede almacenar en el array. El "menos uno" es para reservar espacio para el delimitador, el '\0'.
no soy experto en el asunto ni nada de eso pero a mi entender no veo que mi codigo tenga un array segun he visto en otros codigos un array(si no mal recuerdo) es una sentencia del tipo:
[codigo]
var nombrequequierodarleamivariable[] = {valor valor valor valor};
[/quote]
no estoy seguro, pero corrigeme si me equivoco....
saludos
Cita de: n3t_3rr0r en 2 Enero 2013, 15:35 PM
no soy experto en el asunto ni nada de eso pero a mi entender no veo que mi codigo tenga un array segun he visto en otros codigos un array(si no mal recuerdo) es una sentencia del tipo:
var nombrequequierodarleamivariable[] <==esto es un array¡¡¡ y esto otro su valor==>= {valor valor valor valor};
Por lo tanto:
char hello[5],world [6] son arrays ¡ ¡ ¡
no estoy seguro, pero corrigeme si me equivoco....
Sí hombre, cuando hello y world tomen el valor de hola y mundo serán:hello[5]={'h','o','l','a','\0'}
world [6]={'m','u','n','d','o','\0'}[
Y por cierto, los tamaños están bien declarados, aunque sospecho que por chiripa. ;-) ;-)
Saluditos!. ........... :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
me alegra saber que este lado del foro esta activo...ahora me an salido algunas dudas pero bueno ya las posteare en otro post
saludos