Dev - C++ - Devolver string usando punteros

 
Vista:

Devolver string usando punteros

Publicado por Pepe (21 intervenciones) el 14/10/2020 20:56:33
Hola, tengo una funcion y quiero devolver un string utilizando punteros pero no se como hacerlo.

Os dejo el codigo de como lo tengo (En el printf pongo lo que quiero devolver):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
char* video_share(tVideoTable* table, tVideo* video) {
 
    assert(table != NULL);
    assert(video != NULL);
 
    int i;
    char *url;
 
 
 
 
 
    for (i=0; i<table->size; i++) {
        if(strcmp(table->elements[i].description, video->description) == 0){
        //printf("http://www.spintech.com/@%s/video/%03d\n",video->user,i);
 
            return ??;
        }
    }
 
    return ??;
 
 
}
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

Devolver string usando punteros

Publicado por Nacho (181 intervenciones) el 14/10/2020 22:26:10
Si quieres devolver esa url métela en un char* con strcpy, en url por ejemplo, y pones return url.
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 Rodrigo
Val: 1.649
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Devolver string usando punteros

Publicado por Rodrigo (457 intervenciones) el 14/10/2020 23:37:13
Complementando lo anterior, tienes que pedir memoria dinamica si has de retornar ese 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

Devolver string usando punteros

Publicado por Pepe (21 intervenciones) el 15/10/2020 10:30:46
He pedido memoria para la variable url y he ido concatenando con strcat para llegar a tener "http://www.spintech.com/@usuario/video/"

Hasta aquí todo bien.

El problema que me surge es el siguiente:

La última parte de la url es una variable int, mi pregunta es: ¿Cómo puedo añadirla a esa cadena y en un formato de 3 dígitos, tal que si es 3 se vea 003?

Un saludo.
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

Devolver string usando punteros

Publicado por Nacho (181 intervenciones) el 15/10/2020 11:27:51
sprintf. Es como printf pero escribe en un búfer de memoria.
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
sin imagen de perfil
Val: 279
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Devolver string usando punteros

Publicado por Martín (136 intervenciones) el 15/10/2020 05:52:07
El uso de punteros no es para principiantes,,,,

Y una función que devuelve un puntero no va a ser bienvenida en el mundo C++. ¿Quién aloja su memoria? ¿Quién la desaloja?, ¿debe usar delete o free??? Demasiadas cosas puede salir mal (y muy mal, realmente) para una simple función.

Por suerte el C++ hace muchos años que abandonó esas prácticas. Debes usar string, como todo el mundo, o un smart pointer (que nadie usaría en este caso).

Mira qué fácil, y no puede fallar...

1
2
3
4
5
6
7
8
9
10
11
#include <string>
#include <iostream>
 
std::string video_share() {
    return "hola mundo!";
}
 
int main()
{
    std::cout << video_share();
}
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

Devolver string usando punteros

Publicado por Nacho (181 intervenciones) el 15/10/2020 12:11:24
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
std::string video_share() {
00374C40  push        ebp
00374C41  mov         ebp,esp
00374C43  sub         esp,0CCh
00374C49  push        ebx
00374C4A  push        esi
00374C4B  push        edi
00374C4C  lea         edi,[ebp-0CCh]
00374C52  mov         ecx,33h
00374C57  mov         eax,0CCCCCCCCh
00374C5C  rep stos    dword ptr es:[edi]
00374C5E  mov         dword ptr [ebp-0C8h],0
00374C68  mov         ecx,offset _88D22677_LosPillaos@cpp (0381005h)
00374C6D  call        @__CheckForDebuggerJustMyCode@4 (0371343h)
 
    return "hola mundo!";
00374C72  push        offset string "hola mundo!" (037CD10h)
00374C77  mov         ecx,dword ptr [ebp+8]
00374C7A  call        std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> > (037105Fh)
00374C7F  mov         eax,dword ptr [ebp-0C8h]
00374C85  or          eax,1
00374C88  mov         dword ptr [ebp-0C8h],eax
00374C8E  mov         eax,dword ptr [ebp+8]
 
}
00374C91  pop         edi
00374C92  pop         esi
00374C93  pop         ebx
00374C94  add         esp,0CCh
00374C9A  cmp         ebp,esp
00374C9C  call        __RTC_CheckEsp (0371352h)
00374CA1  mov         esp,ebp
00374CA3  pop         ebp
00374CA4  ret         4

El compilador reserva la memoria y devuelve el offset de la cadena. El compilador sabe programar mejor que nosotros y nunca se equivoca.
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
sin imagen de perfil
Val: 38
Ha aumentado su posición en 30 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Devolver string usando punteros

Publicado por Cristina (8 intervenciones) el 17/10/2020 23:58:45
Una compañia de telefono internacional cobra a sus clientes las llamadas en minutos segun al destino al cual se hace la llamada, de acuerdo con lo siguiente:
NUMERO DESTINO TARIFA
1 México $1.00

2 Canadá $2.50

3 Estados Unidos $2.00

4 Argentina $3.00

5 España $3.50

CONSIDERA QUE EL TIEMPO SE LEE EN SEGUNDOS
Además existe una promoción que se aplica de la siguiente forma
*Rango de consumo en segundos Porcentaje de cobro
0-600 100%
601-1500 70%
Más de 1500 50%
Deberá mostrar de acuerdo con los datos de la llamada el siguiente recibo en pantalla
-Destino
-Precio por minuto
-Tiempo(segundos)
-Tiempo(minutos)
-Costo normal
-Porcentaje de descuento
-Monto de descuento
-TOTAL A PAGAR
ayudenme a hacer este programa en dev c++ plis:c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar