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;
    
}
			
			
			
				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 ...
			
			
			
				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...
			
			
			
				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 ::)