Foros del Web » Programación para mayores de 30 ;) » C/C++ »

concatenar caracteres con un string

Estas en el tema de concatenar caracteres con un string en el foro de C/C++ en Foros del Web. Ante todo felices fiestas a todo el mundo! :) Veamos, mi problemilla es el siguiente: Tengo un archivo txt con una serie de lineas y ...
  #1 (permalink)  
Antiguo 29/12/2010, 03:06
 
Fecha de Ingreso: diciembre-2010
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta concatenar caracteres con un string

Ante todo felices fiestas a todo el mundo! :)

Veamos, mi problemilla es el siguiente:

Tengo un archivo txt con una serie de lineas y caracteres, lo que necesito es saber si se puede ir leyendo caracter a caracter (hasta un determinado punto del archivo) y a la vez ir agrandando un string para guardarlo y posteriormente mostrarlo todo de golpe.

Gracias de antemano.

PD: el lenguaje es C.
  #2 (permalink)  
Antiguo 29/12/2010, 04:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 4
Antigüedad: 13 años, 4 meses
Puntos: 0
Información Respuesta: concatenar caracteres con un string

Pues con C++ seria muy fácil con el uso de la clase std::string y la función getline().
Pero bueno en C tendrías que manejar memoria dinámica si quieres hacer lo que dices.

Lo mas fácil seria crear un arreglo de caracteres lo bastante grande como para que quepa tu archivo de texto.

Lo que tratas de hacer SI ES POSIBLE, pero no se me hace la forma mas eficiente de hacerlo... a mi se me ocurre por ejemplo primero contar cuantos caracteres tiene exactamente el documento, usar malloc() para asignarle la memoria exacta al arreglo dinámico y luego hacer lo que tu dices, ir leyendo y copiando al arreglo dinámico cada carácter que vas leyendo del archivo de texto.

Si de todos modos quieres hacerlo como tu planteas la forma de hacer que un arreglo dinámico crezca de tamaño es con la función(esta en la biblioteca stdlib.h) realloc() y si no te regresa NULL, es que el arreglo si pudo "crecer".
  #3 (permalink)  
Antiguo 29/12/2010, 04:37
 
Fecha de Ingreso: diciembre-2010
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: concatenar caracteres con un string

Gracias por la respuesta bdragonsb3, yo lo que queria saber es si habia algo tipo la funcion strcat pero que uniese un string y un caracter, si no pues lo hare como dices, contando los caracteres que necesito guardar y en un vector dinamico meter los caracteres uno a uno.

gracias ;)
  #4 (permalink)  
Antiguo 29/12/2010, 04:39
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: concatenar caracteres con un string

para leer caracteres de uno en uno se hace asi:

Código C:
Ver original
  1. fscanf(fp, "%1c", &matriz[i][j]);


te dejo un ejemplo que hice para un forero que pregunto. lo unico que solo lee numeros. tienes que cambiarlo para que lea e imprima caracteres.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int i, j;
  7.     int escenario[50][50];        
  8.     FILE *fp;
  9.  
  10.     fp = fopen("ejemplo1.txt","r");
  11.     if(fp==NULL)
  12.         printf("error");
  13.  
  14.     for(i=0;i<17;i++)
  15.     {
  16.         for(j=0;j<19;j++)
  17.         {
  18.             fscanf(fp, "%1d", &escenario[i][j]);     //se guarda en un array
  19.             printf("%d", escenario[i][j]);               //y se imprime a la vez (aprovechamos por que el bucle es el mismo)
  20.         }
  21.         printf("\n");      //cada vez que se termina una fila hay que pasar a la siguiente linea
  22.     }
  23.  
  24.     fclose(fp);
  25.  
  26.  
  27.     system("pause");
  28.     return 0;
  29.  
  30. }


ejemplo1.txt
Código:
1111111111111111111
1000000001000000001
1011011101011101101
1000000000000000001
1011010111110101101
1000010001000100001
1111011101011101111
1111010000000101111
1111000111110001111
1111010000000101111
1111011101011101111
1000010001000100001
1011010111110101101
1000000000000000001
1011011101011101101
1000000001000000001
1111111111111111111
salida
Cita:
1111111111111111111
1000000001000000001
1011011101011101101
1000000000000000001
1011010111110101101
1000010001000100001
1111011101011101111
1111010000000101111
1111000111110001111
1111010000000101111
1111011101011101111
1000010001000100001
1011010111110101101
1000000000000000001
1011011101011101101
1000000001000000001
1111111111111111111
Presione una tecla para continuar . . .
  #5 (permalink)  
Antiguo 29/12/2010, 04:46
 
Fecha de Ingreso: diciembre-2010
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: concatenar caracteres con un string

Vale, conocia el fscanf pero no habia caido que como tu dices podia leer de uno en uno, muchas gracias creo que esto me soluciona el problema :)
  #6 (permalink)  
Antiguo 30/12/2010, 01:57
 
Fecha de Ingreso: diciembre-2010
Mensajes: 4
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: concatenar caracteres con un string

Cita:
Iniciado por Andriu86 Ver Mensaje
Gracias por la respuesta bdragonsb3, yo lo que queria saber es si habia algo tipo la funcion strcat pero que uniese un string y un caracter, si no pues lo hare como dices, contando los caracteres que necesito guardar y en un vector dinamico meter los caracteres uno a uno.

gracias ;)
Despues de Buscar un poquito me encontre con que si existe la funcion srtcat() y tambien otra llamada strncat() ambas de la biblioteca string.h

Funcionan asi:
Listing 21.4. Using strcat() and strncat().

1: #include <iostream.h>
2: #include <string.h>
3:
4:
5: int main()
6: {
7: char stringOne[255];
8: char stringTwo[255];
9:
10: stringOne[0]='\0';
11: stringTwo[0]='\0';
12:
13: cout << "Enter a string: ";
14: cin.getline(stringOne,80);
15:
16: cout << "Enter a second string: ";
17: cin.getline(stringTwo,80);
18:
19: cout << "String One: " << stringOne << endl;
20: cout << "String Two: " << stringTwo << endl;
21:
22: strcat(stringOne," ");
23: strncat(stringOne,stringTwo,10);
24:
25: cout << "String One: " << stringOne << endl;
26: cout << "String Two: " << stringTwo << endl;
27:
28: return 0;
29: }

Salida:
Enter a string: Oh beautiful
Enter a second string: for spacious skies for amber waves of grain
String One: Oh beautiful
String Two: for spacious skies for amber waves of grain
String One: Oh beautiful for spacio
String Two: for spacious skies for amber waves of grain


Esta muy claro no?
Podrias ir creciendo tu arreglo dinamico de uno en uno conforme vallas leyendo caracteres y al mismo tiempo ir concatenando el arreglo dinamico con el siguiente caracter(previamente extraido).

Etiquetas: caracteres, concatenar, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.