Autor
|
Tema: Guarda cadenas con espacios - como? (Leído 22,490 veces)
|
d00ze13
Desconectado
Mensajes: 78
|
Queria saber si se puede guardar una caddena con espacios en blanco y guardarlo en una variable de una estructura y luego guardarla en un fichero y que te pueda leer la cadena esa con sus espacios al leer el fichero, eso es posible? pongo un ejemplo para que me entendais, faltaria la escritura y lectura a fichero #include <iostream> using namespace std; struct datos{ char texto[100]; }; int main(){ struct datos persona; cout<<"Introduce texto"<<endl; cin>>persona.texto; // Aqui escribiriamos por ejemplo -> esto es una prueba con espacios cout<<persona.texto; }
|
|
|
En línea
|
|
|
|
naderST
|
No entiendo la pregunta, no te almacena en persona.texto el texto con espacios?
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
#include <cstdio> int main() { char cadena[100]; fgets(cadena, 100, stdin); printf("%s", cadena); getchar(); return 0; }
El texto se queda guardado en la cadena, que lógicamente puedes escoger el tamaño que te convenga, y simplemente luego abres el fichero y escribes el contenido. Igual no estaría de más que leyeras sobre cadenas y las funciones básicas de input y output: http://www.cplusplus.com/doc/tutorial/arrays/http://www.cplusplus.com/doc/tutorial/basic_io/cin sólo lee hasta el primer espacio. Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
|
|
« Última modificación: 12 Junio 2011, 10:43 am por Queta »
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
willyhunting
|
Por supuesto que puedes leer una cadena con espacios y guardarla en un fichero, el espacio es un carácter como cualquier otro.
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
Usando cin de esta manera, solamente puedes hasta el primer espacio en blanco.
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
d00ze13
Desconectado
Mensajes: 78
|
ok todo aclarado mil thnks ! ; )
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
¿Pero qué método usarás al final?
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
d00ze13
Desconectado
Mensajes: 78
|
pues aun no lo se, voy a probar varias y la que vea que mejor va, probare estas 2 de momento pero ya mañana que madrugo y sino luego no me tengo, ya os contare cual me fue mejor y el codigo por si le es de utilidad a alguien
fgets(cadena, 100, stdin);
string cadena; getline(cin,cadena);
|
|
|
En línea
|
|
|
|
d00ze13
Desconectado
Mensajes: 78
|
Buena ya estoy con el codigo que mas o menos lo tengo salvo que cuando hace la segunda vez el bucle al introducir s me carga la cadena sola sin yo introducirle nada, alguien ve algun fallo? #include <iostream> #include <fstream> using namespace std; void escribe(char **name){ ofstream fs("pw"); fs<<*name<<endl; fs.close(); } void lee(char **cadena){ ifstream fe("pw"); fe.getline(*cadena,30); cout<<*cadena<<endl; fe.close(); } int main(void){ int cont=0; char **cad; char resp='s'; cad=new char *[100]; do{ cad[cont]=new char[100]; cout<<"Cadena?: "; fgets(cad[cont],100,stdin); cont++; escribe(cad); lee(cad); cout<<"Mas [s/n]?: "; cin>>resp; }while(resp=='s'); for(int i=0;i<cont;i++) delete[]cad[i]; delete[]cad; return 0; }
|
|
|
En línea
|
|
|
|
Lx
Desconectado
Mensajes: 12
|
Aquí te dejo tu código corregido ... #include <iostream> #include <fstream> using namespace std; void escribe(char **name, int cont){ ofstream fs("pw.txt"); for( int i = 0; i < cont; i++){ fs<<name[i]<<endl; } fs.close(); } void lee( int cont){ char cadena[100]; ifstream fe("pw.txt"); for( int i = 0; i < cont; i++){ fe.getline(cadena,100); cout<<cadena<<endl; } fe.close(); } int main(void){ int cont=0; char **cad; char resp='s'; cad=new char *[100]; do{ cad[cont]=new char[100]; cout<<"Cadena?: "; cin.getline(cad[cont],100); cont++; escribe(cad, cont); lee(cont); cout<<"Mas [s/n]?: "; cin>>resp; while(getchar()!='\n'); // esto elimina la basura del buffer que hacía que se salte la lectura de la cadena. }while(resp=='s'); for(int i=0;i<cont;i++) delete[]cad[i]; delete[]cad; return 0; }
El error en tu código está en que tú asumes que *cad es el conjunto de todos los cad[n], pero no es así, *cad es igual - únicamente - a cad[0], ya que *cad sólo apunta a la dirección del 1r elemento de ese vector de cadenas.
|
|
« Última modificación: 19 Mayo 2011, 04:06 am por Lx »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema al leer cadenas con espacios [C++]
Programación C/C++
|
Don Pollo
|
3
|
21,757
|
20 Mayo 2011, 03:49 am
por Lx
|
|
|
Leer cadenas tipo string con espacios
Programación C/C++
|
luisda2994
|
4
|
20,777
|
24 Julio 2012, 19:55 pm
por luisda2994
|
|
|
lo mas basico, como manipular cadenas
Programación C/C++
|
rod00x3
|
2
|
2,340
|
7 Enero 2013, 20:57 pm
por Stakewinner00
|
|
|
Como remover espacios en C/C++?
Programación C/C++
|
t4r0x
|
5
|
3,736
|
17 Junio 2014, 14:22 pm
por leosansan
|
|
|
¿Como dejar espacios en un int?
Programación C/C++
|
LuisUvtol
|
1
|
2,526
|
4 Mayo 2020, 18:00 pm
por ThunderCls
|
|