Autor
|
Tema: cadena de caracteres a ASCII (Leído 3,821 veces)
|
sabar
Desconectado
Mensajes: 15
|
#include<iostream> #include <string.h> #include<stdio.h> using namespace std; int main(){ char frase[50]; int j,i,tam, num_frase[50]; cout<<"ingrese la frase: "; gets(frase); tam=strlen(frase)-1; for(i=0,j=0;j<tam,i<tam;j++, i++){ frase[i]=num_frase[j]; cout<<frase[i]<<"="<<num_frase[j]<<"\n"; } }
EL PROBLEMA ES QUE ME SALE BASURA AL FINAL Y NO HE VISTO CUAL PUEDE SER EL PROBLEMA
|
|
|
En línea
|
|
|
|
fary
|
Estas usando C++, sin embargo, tienes librerías incluidas de C... Te dejo como sería en C: #include <stdio.h> int main() { char buffer[50]; int i = 0; while (buffer[i]) { printf("%c = %i\n", buffer [i ], buffer [i ]); i++; } return 0; }
Salida del programa: Ingresa la frase: hola h = 104 o = 111 l = 108 a = 97
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
sabar
Desconectado
Mensajes: 15
|
Estas usando C++, sin embargo, tienes librerías incluidas de C... Te dejo como sería en C: #include <stdio.h> int main() { char buffer[50]; int i = 0; while (buffer[i]) { printf("%c = %i\n", buffer [i ], buffer [i ]); i++; } return 0; }
Salida del programa: Ingresa la frase: hola h = 104 o = 111 l = 108 a = 97
hay un problema y es que solo lee la primera palabra y lo que se busca es que lea toda una frase y otro problema aunque menor es que se necesita en c++
|
|
|
En línea
|
|
|
|
engel lex
|
El primer código también compila en c++ se usa printf en muchos casos cuando quieres tener control de la impresión, ya que cout algunas veces pasa cosas por alto... tu código tiene cosas de c también (stdio.h y string.h, para c++ es sin .h)
Quieta string.h y stdio.h, usa getline para leer y recorre la cadena con u n while, haces un if de manera que si el carácter leído es '\0' o '\n' haga break para salir del ciclo
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Orubatosu
|
strlen te da el tamaño del array entre la posición "0" y el carácter de fin, sin incluir este
Cuando te salga "basura" al final siempre el problema es que estas leyendo fuera de los límites que se supone has establecido, y por ahí tienes que buscar el problema.
Recuerda que cuando inicializas una variable del tipo que sea (o casi todas), y eso incluye los arrays, lo que se hace es reservar un espacio de memoria para esa variable, pero el programa en ningún momento se encarga de "limpiar" esa zona, de manera que puede contener cualquier valor.
Y esa es la "basura" que puede salirte. En estos casos siempre tienes la pista de porque falla, y por ahí es por donde debes de buscar.
|
|
|
En línea
|
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness" Hideto Matsumoto 1964-1998
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
EL PROBLEMA ES QUE ME SALE BASURA AL FINAL Y NO HE VISTO CUAL PUEDE SER EL PROBLEMA Por favor NO publiques todo el texto de tu mensaje en mayúsculas, lo prohíben las reglas de los foros. En cuanto al programa se deben cambiar los nombres de los encabezados y evitar el uso de la función gets, las razones de ello se indican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|. Ademas: * No es necesario el uso de dos contadores (las variables "i" y "j"), con uno solo basta. * Para procesar todos los caracteres el limite debe ser "< strlen(frase)". * Lo anterior no es necesario ya que las cadenas "a la C" se pueden procesar hasta encontrar el carácter '\0'. * El programa no genera la salida esperada porque la asignación esta al revés: frase[i] = num_frase[j]; // Deberia ser num_frase[j] = frase[i];
Por ultimo no es necesario un array de enteros, en su lugar se puede generar el entero correspondiente con: cout << frase[i] << "=" << int(frase[i]) << endl;
Un saludo
|
|
|
En línea
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Extraer ASCII de cadena
Programación Visual Basic
|
Javilondo
|
3
|
10,827
|
1 Noviembre 2013, 01:53 am
por pilotomenduco
|
|
|
caracteres ascii
Windows
|
roxie
|
2
|
4,695
|
14 Septiembre 2010, 20:34 pm
por jadara
|
|
|
Comparar cadena con un caracter ascii
Programación C/C++
|
d00ze13
|
2
|
11,756
|
9 Marzo 2011, 10:30 am
por Akai
|
|
|
Descifrar una cadena ascii que esta codificada con otro algoritmo...
Programación Visual Basic
|
illuminat3d
|
0
|
1,624
|
27 Julio 2019, 21:01 pm
por illuminat3d
|
|
|
Simulación de la tecla BackSpace(en ASCII:CHR(8)) para editar una cadena de caracteres en C++
Programación C/C++
|
Soufian
|
1
|
5,299
|
17 Febrero 2024, 17:29 pm
por TickTack
|
|