Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: antkk en 6 Junio 2015, 12:21 pm



Título: Problema con parámetros que recibe main(int argc, char *argv[])
Publicado por: antkk en 6 Junio 2015, 12:21 pm
Buenas, tengo un problema con argv en mi main. El código es este:

Código
  1. #include <iostream>
  2. #include "matriz.h"
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc,char *argv[]){
  7.  
  8. if(argc == 1){
  9.  
  10. Matriz matriz;
  11. cin >> matriz;
  12. matriz.Escribir("datos.txt");
  13.  
  14. cout << matriz;
  15.  
  16.  
  17. }
  18.  
  19. else if(argc == 2){
  20.  
  21. Matriz matriz;
  22. cout << "Estoy aqui." << endl;
  23. cin >> matriz;
  24. char nombre[20];
  25. nombre=argv[1];
  26.  
  27. matriz.Escribir(nombre);
  28.  
  29. cout << matriz;
  30. }
  31. }

El problema se produce al compilar:

Código
  1. main.cpp: In function ‘int main(int, char**):
  2. main.cpp:26:9: error: incompatible types in assignment of ‘char*’ to ‘char [20]
  3.   nombre=argv[1];
  4.         ^
  5. make: *** [main.o] Error 1
  6.  

En el caso de que pudiera ejecutar, argv[1] contiene "datos.txt"

Un saludo.


Título: Re: Problema con parámetros que recibe main(int argc, char *argv[])
Publicado por: ivancea96 en 6 Junio 2015, 14:08 pm
¿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.