Problema con parámetros que recibe main(int argc, char *argv[])

Iniciado por antkk, 6 Junio 2015, 12:21 PM

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

antkk

Buenas, tengo un problema con argv en mi main. El código es este:

Código (cpp) [Seleccionar]
#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:

Código (cpp) [Seleccionar]
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.

ivancea96

¿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.