C/Visual C - char* como parametro de funcion(return)

 
Vista:
sin imagen de perfil

char* como parametro de funcion(return)

Publicado por Rafael (17 intervenciones) el 04/07/2016 03:11:47
Buen dia a toda la comunidad, Pues bueno cada cuanto los molesto con algun tema en los cuales me estanco y no se como procesir esta vez estoy aprendiendo los usos de las funciones return tanto cuando devuelven un valor como cuando solo estan para terminar la ejecucion de una funcion, esta vez me he estancado con este ejemplo que ponen en el libro se trata de una funcion que devuelve un substring tu ingresas dos frases y pones una palabra que necesita ser hayada en el un string y esta te dice en que posicion del string se encuentra pues bueno el problema radica en que cuando pongo los string me devuelve un warning que dice que no puedo usar char* en esa secuencia la vez anterior pregunte algo por el estilo y su respuesta fue eso de usar const char* cuando ponga un string. pongo el programa para que me digan en que fallo o que mas puedo leer para ir agarrando mas conocimiento en este ambito de los const char* ya que veo que son muy usados para la programacion a nivel mas profecional:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*--------------------------------
Aca veremos otro ejemplo de como 
usar return en funciones que devuelven 
algo.
--------------------------------*/
#include <iostream>
using namespace std;
 
//prototipo de funciones
int buscar_substr(char* sub,char* str);
 
int main(){
 
	int index;
 
	index = buscar_substr("uno","uno dos tres cuatro");
 
	cout<<"El index de tres es: "<<index;
	// index es 
 
 
 
 
 
	return 0;
}
int buscar_substr(char* sub,char* str){
 
	int t;
	char *p,*p2;
 
	for(t=0; str[t]; t++){
		p = &str[t]; // resetea el puntero
		p2 = sub;
		while(*p2 && *p2==*p ){
			p++;
			p2++;
		}
 
		if(!*p2) return t; // retorna el index
	}
	return -1;// cuando no encuentra string que encajen
	}

aca dejo una imagen del error/warning que me sale a la hora de ejecutar el programa.
thump_9616427errorcpp
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

char* como parametro de funcion(return)

Publicado por agustin (272 intervenciones) el 05/07/2016 09:19:25
Prueba asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
//prototipo de funciones
int buscar_substr(const char* sub,const char* str);
 
int main(){
	int index;
    const char substr[]="tres";
    const char str[]="uno dos tres cuatro";
	index = buscar_substr(substr,str);
	std::cout<<"El index de "<<substr<<" es: "<<index;
	return 0;
 
}
 
int buscar_substr(const char* sub,const char* str){
	int t;
	char *p,*p2;
 
	for(t=0; str[t]; t++){
		p = (char*)&str[t]; // resetea el puntero
		p2 = (char*)sub;
		while(*p2 && *p2==*p ){
			p++;
			p2++;
		}
		if(!*p2) return t; // retorna el index
	}
	return -1;// cuando no encuentra string que encajen
}
Ya te digo que ese warning no es importante pero bueno. El caso es que le estas pasando como parametro dos const char* pero tu prototipo de funcion esperaba char*.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de SuperIndio
Val: 47
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

char* como parametro de funcion(return)

Publicado por SuperIndio (42 intervenciones) el 19/07/2016 16:08:19
Bueno RETORNAR una CADENA de caracteres, en c no lo veo, lo que si se puede
es retornar el puntero que apunta a la cadena que quieres retornar o definir
una variable global publica

static char cRetorna[40];

y ahi en la funcion mover ahi el resultado de la subcadena que quieres retornar
y desde donde llamas a la funcion podras visualizar el valor en cRetorna aunque
en este caso ya no seria una funcion sino un void()
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar