Ayuda con codigo en c++, problema con strcmp

Iniciado por ismaealejandroangel, 4 Octubre 2011, 23:17 PM

0 Miembros y 1 Visitante están viendo este tema.

ismaealejandroangel

me sale el siguiente error, invalid conversion from char to const char. Espero me pueda ayudar a corregir el error ya que he tratado y no he podido. Lo que se supone que hace el programa es leer un archivo de texto y se guarda cada linea en una cadena y lo que trato de hacer es acomodar las cadenas en orden alfabetico espero me puedan ayudar, de antemano gracias
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#define n 5
using namespace std;
int main()
{
    FILE *materia;
    char* c;
    char nombre[128];
    c = new char[1024];
    int i;
printf("Dame el nombre del archivo: ");
scanf("%s",&nombre); fflush(stdout);
materia = fopen(nombre, "r");
fstream materia2(nombre);
size_t i1 = 0;   
string cadena;
while (getline(materia2, cadena))
{
++i1;
}


for(i=1;i<=i1-1;i++)
{
    printf("\n ");
    printf("MATERIA[%d]= ",i);           
        do
        {
        c = getc(materia);
        putchar(c);
}
        while (c !='\n');
}

int a, b;
char* pivote;
for(a = 0; a < i1-1; a++)
for(b = i1-1; b > a; b--)
{
if(strcmp(c[b-1],c)>0)
{
strcpy(pivote,c[b-1]);
strcpy(c[b-1], c);
strcpy(c, pivote);
}
}
delete c;

fclose(materia);
getchar();
system("pause");
return 0;
   
}

Eternal Idol

Logico, tanto strcmp como strcpy trabajan con cadenas (conjuntos de caracteres con un cero terminador) y vos le estas pasando UN caracter (c[b-1]). Tampoco podes copiar en pivote que es un puntero indefinido ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

LearningSpanishProgrammer

No entiendo por que mezcla bibliotecas de el C y de el C++

La impresión es que tu estas a copiar codigo sin entender...
Estoy aprendiendo español, y tu estas aprendiendo programación

dewolo

claro cuando declaras un puntero char debes asignarle inmediatamente alguna cadena y un cero terminante ej:

char *cadena = "asdasdasd\0";

sino queda como un puntero NULL y no puede usarse. sino te conviene declarar un vector de char algo como esto

char vector[128] = {0};

y lo inicialisas con cero de esa manera.

cuando asignas desde un puntero char a un char debes hacerlo como si se tratara de un vector de char, usando notasion de corchetes asi

cadena[posicion] = char

no se si me explico, y las funciones de cadena solo trabajan con cadenas terminadas en cero como bien se dijo..  aunque algunas reasignan el cero terminante ::)