Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0x3c en 23 Diciembre 2012, 23:04 pm



Título: [src]Hello world
Publicado por: 0x3c en 23 Diciembre 2012, 23:04 pm
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:
Código:
#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


Título: Re: [src]Hello world
Publicado por: $Edu$ en 24 Diciembre 2012, 00:23 am
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!


Título: Re: [src]Hello world
Publicado por: 0x3c en 24 Diciembre 2012, 01:30 am
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


Título: Re: [src]Hello world
Publicado por: durasno en 24 Diciembre 2012, 01:51 am
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


Título: Re: [src]Hello world
Publicado por: 0x3c en 24 Diciembre 2012, 20:03 pm
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


Título: Re: [src]Hello world
Publicado por: 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.


Título: Re: [src]Hello world
Publicado por: 0x3c en 25 Diciembre 2012, 09:55 am


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


Título: Re: [src]Hello world
Publicado por: rir3760 en 25 Diciembre 2012, 17:45 pm
* 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


Título: Re: [src]Hello world
Publicado por: 0x3c en 2 Enero 2013, 15:35 pm
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


Título: Re: [src]Hello world
Publicado por: leosansan en 2 Enero 2013, 16:56 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:

Código
  1. var nombrequequierodarleamivariable[] <==esto es un array¡¡¡ y esto otro su valor==>= {valor valor valor valor};
  2. Por lo tanto:
  3. char hello[5],world [6] son arrays ¡ ¡ ¡
  4.  

no estoy seguro, pero corrigeme si me equivoco....
Sí hombre, cuando hello y world tomen el valor de hola y mundo serán:
Código
  1. hello[5]={'h','o','l','a','\0'}
  2. 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:


Título: Re: [src]Hello world
Publicado por: 0x3c en 2 Enero 2013, 17:29 pm
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