Título: Ayuda con codigo en c++, problema con strcmp Publicado por: ismaealejandroangel en 4 Octubre 2011, 23:17 pm 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; } Título: Re: Ayuda con codigo en c++, problema con strcmp Publicado por: Eternal Idol en 4 Octubre 2011, 23:57 pm 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 ...
Título: Re: Ayuda con codigo en c++, problema con strcmp Publicado por: LearningSpanishProgrammer en 5 Octubre 2011, 01:36 am 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... Título: Re: Ayuda con codigo en c++, problema con strcmp Publicado por: dewolo en 5 Octubre 2011, 01:57 am 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 ::) |