Autor
|
Tema: Crear un array de caracteres mediante una funcion. (Leído 3,573 veces)
|
euroesp
Desconectado
Mensajes: 8
|
Buenas.
Estoy creando un programa que mediante una funcion y a partir de diferentes cadenas de texto me las una y me devuelva una unica cadena. Me da errores varios y esperaba aque me pudieran ayudar. Les paso el código.
#include <stdio.h> #include <stdlib.h>
int main() { char a,m; const char* nombre[12];
a = '96'; m = '03';
nombre = nombre1(m,a); printf("%s",nombre); return 0; }
const char* nombre1(char m, char a){
char nombre[12];
strcat(nombre,a); strcat(nombre,"_"); strcat(nombre,m); strcat(nombre,".15.txt");
return nombre;
}
Gracias por adelantado.
|
|
|
En línea
|
|
|
|
|
euroesp
Desconectado
Mensajes: 8
|
Buenas,
He leido lo que me dijiste y me ha servido de mucho, muchas gracias; aunque aun me quedaron aglunos errores y dudas. Te adjunto el nuevo codigo:
#include <stdio.h> #include<string.h> #include<stdlib.h> #define dim 3
char *nombre1( char *m, char *a ); int main() { char a[dim] = "",m[dim] = "",d[dim] = "",*nombre2 = NULL; int l;
setbuf(stdout, NULL); printf( "dame la a: \n"); fgets(a, dim, stdin); limpiarBuffer(a);
printf( "dame la m: \n"); fgets(m, dim, stdin); limpiarBuffer(m);
nombre2 = nombre1(m,a); printf("\n %s",nombre2); <--------------------- (1) return 0; }
char* nombre1(char* m, char* a){ size_t totCarac = strlen( m ) + strlen( a ) +8; char *nombre = ( char* )malloc( totCarac * sizeof(char) );
nombre = strcat(a,"_"); nombre = strcat(nombre,m); nombre = strcat(nombre,".15.txt"); printf("\n %s",nombre); <----------------- (2)
return nombre;
}
void limpiarBuffer( char cadena[] ){ char *p = NULL; size_t ch;
if((p=strchr(cadena, '\n'))){ *p='\0'; } else{ while((ch = getchar()) !='\n' && ch!=EOF); } }
La duda que tengo es referente a la funcion "LimpiarBuffer", es una funcion que copie de uno de los links que me pasaste y que me evita que me salgan ciertos saltos de linea y espacios que yo no le he especificado, pero realmente no entiendo mucho su funcionamiento, si puedieras explicarmelo te lo agradeceria.
A la hora de compilar, es curioso que en el printf que he marcado con un (2) me escribe perfectamente el string que yo quiero crear, de la forma que, suponiendo que a: 55 y m: 66, devuelve "55_66.15.txt", pero sin embargo, al escribirlo en el printf marcado con un (1) solo escribe "55_) a", y no consigo repararlo.
Gracias por adelantado.
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola. No tengo tiempo en este momento para explicarte soble esa función, pero fíjate que tiene mucho que ver con la imagen. Saludos.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
El erro esta en que aunque si reservas memoria para el nombre en la función. Posteriormente reasignas el apuntador de nombre al valor del buffer a. Deberia de quedar asi. char *nombre = ( char* )calloc( totCarac , sizeof(char) ); nombre = strcat(nombre ,".15.txt");
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola. void limpiarBuffer( char cadena[] ){ char *p = NULL; size_t ch; if((p =strchr(cadena , '\n'))){ //LB01 *p='\0'; } else{ while((ch = getchar()) !='\n' && ch !=EOF ); //LB02 } }
/* LB01 strchr busca un carácter dentro de una cadena, si lo encuentra devuelve la dirección en memoria donde se encuentra el carácter , en este caso '\n' (Enter) si lo encuentra lo remplaza por '\0' que es el carácter que marca el final de cadena en C. LB02 Si no lo encuentra es que en el buffer del teclado han quedado caracteres sin leer, con este bucle y la función getchar el buffer queda limpio, sin nada pendiente de lectura.- Faltaria explicarte que pasa si el buffer queda con pendientes pero eso lo tengo entendido pero no me da para explicartelo. Saludos.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
euroesp
Desconectado
Mensajes: 8
|
¡Gracias a todos por sus aportes, me han ayudado mucho!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Separación de caracteres en Strings y guardado en array
Java
|
Debci
|
4
|
6,065
|
18 Septiembre 2009, 06:39 am
por Skeletron
|
|
|
Problemas con array (unidimencional) de caracteres [C++]
Programación C/C++
|
.:BlackCoder:.
|
5
|
4,301
|
20 Mayo 2010, 23:11 pm
por .:BlackCoder:.
|
|
|
[C] Devolver array bidimensional mediante una función
« 1 2 »
Programación C/C++
|
crawler!
|
12
|
21,717
|
24 Junio 2013, 22:00 pm
por crawler!
|
|
|
[C] Funcion regresa array de caracteres
Programación C/C++
|
edr89
|
3
|
2,768
|
9 Octubre 2013, 08:53 am
por eferion
|
|
|
Acceder a los caracteres de un array de punteros
Programación C/C++
|
David8
|
5
|
2,255
|
6 Mayo 2014, 12:24 pm
por eferion
|
|