[src]Hello world

Iniciado por 0x3c, 23 Diciembre 2012, 23:04 PM

0 Miembros y 2 Visitantes están viendo este tema.

0x3c

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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

$Edu$

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!

0x3c

#2
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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

durasno

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
Ahorrate una pregunta, lee el man

0x3c

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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

naderST

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.

0x3c



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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

rir3760

* 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

0x3c

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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

leosansan

#9
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:

Código (cpp) [Seleccionar]

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:
Código (cpp) [Seleccionar]
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: