Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ricardo2013

#1
Programación C/C++ / cin.getline y cin.ignore
25 Octubre 2012, 13:08 PM
Código (c++) [Seleccionar]

#include <iostream>
#include <limits>

using namespace std;

int main()
{
    char nombre[10] = "";
    int dia = 0;

    cin.getline(nombre, 10, '\n');
    cin.ignore(numeric_limits<int>::max(), '\n');
   
    cout << "dia: ";
    cin >> dia;
    cout << "dia: " << dia << endl;

    return 0;       
}


Compilo y ejecuto:


[tmp]$ g++ a1.cpp -Wall -g -o a1
[tmp]$ ./a1
hola esto es una prueba con una cadena que ocupa mas de 10 caracteres
dia: dia: 0
[tmp]$


¿Por qué no me pide por pantalla el valor de día?

Gracias de antemano
#2
Programación C/C++ / Matriz estática
24 Octubre 2012, 20:40 PM

#include <iostream>

int main()
{
    const int i = 2;
    static char cadena[i];
    return 0;
}


El error:

error: storage size of 'cadena' isn't constant


¿Por qué me da este error? Sin embargo si quito el static, no da error.

El motivo de querer que sea static es para hacer algo similar a esto:

Código (c++) [Seleccionar]

    char *Clase::obtenerNombre(char * nombre) const {
        if (m_nombre) {
            const int len = strlen(m_nombre)+1;
            static char nom[len];
            strcpy(nom, m_nombre);
            nombre = nom;
            return nombre;
        }
    }


m_nombre es un atributo de la clase "Clase" y que está definido de la siguiente forma:
Código (c++) [Seleccionar]

char *m_nombre;


Defino el array nom estático, para que el usuario de la clase no tenga que preocuparse de liberar memoría con delete. Estoy obligado a usar char * y no std::string.

Gracias de antemano
#3
Hay algo que me desquicia en VS, quizás alguien que haya trasteado pueda ayudarme. Estoy acostumbrado a editores como vim, en el que me muevo muy fácilmente por el código con atajos del teclado, por ejemplo: avanzar palabras, eliminar una palabra hacia atrás  o hacia adelante, ir al final de la línea, etc...
Se puede configurar esto en VS2012?

Gracias de antemano
#4
¿Por qué no me funciona esto para imprimir un float en dígitos hexadecimales?



#include <stdio.h>

int main()
{
    float f = 5.5;
    printf("%X\n", f);
    return 0;
}



Debería de salir (códificación IEEE 754): 80 B0 00 00
y da: DAC98408

Gracias anticipadas
#5
Programación C/C++ / EOF y sscanf (SOLUCIONADO)
11 Octubre 2012, 11:00 AM

#include <stdio.h>
#include <string.h>

int main()
{
   int dato;
   int rs;
   char linea[8];
   fgets(linea, 8, stdin);
   rs = sscanf(linea, "%d", &dato);
   printf("%d\n", rs);
   return 0;
}


¿Por qué al introducir Ctrl+d (EOF) no imprime -1?

Al final encontré el problema, había que iniciar linea a '\0'

Gracias de antemano