Buenas, tengo un problema con argv en mi main. El código es este:
#include <iostream>
#include "matriz.h"
using namespace std;
int main(int argc,char *argv[]){
if(argc == 1){
Matriz matriz;
cin >> matriz;
matriz.Escribir("datos.txt");
cout << matriz;
}
else if(argc == 2){
Matriz matriz;
cout << "Estoy aqui." << endl;
cin >> matriz;
char nombre[20];
nombre=argv[1];
matriz.Escribir(nombre);
cout << matriz;
}
}
El problema se produce al compilar:
main.cpp: In function 'int main(int, char**)':
main.cpp:26:9: error: incompatible types in assignment of 'char*' to 'char [20]'
nombre=argv[1];
^
make: *** [main.o] Error 1
En el caso de que pudiera ejecutar, argv[1] contiene "datos.txt"
Un saludo.
¿Trabajaste alguna vez con punteros?
argv es un char**. argv[1] es un char*, un puntero a char. Si quieres copiar una cadena, o la copias a mano, o usas funciones como strcpy().
Salvo que sepas planeamente lo que quieres hacer, nunca pongas char* = char*. No estás copiando los datos, solo estás copiando la dirección de memoria. Si uno de los dos desaparece, el otro también desaparecerá.
Ya que usas C++, puedes usar simplemente string.