Autor
|
Tema: Meter en cadena argumento en C (Leído 2,866 veces)
|
JoseluCross
Desconectado
Mensajes: 33
Conoceréis la Verdad, y la Verdad os hará libres
|
Hola a todos, quiero meter un argumento especificado en la ejecución del programa en una cadena para luego abrir un archivo con ese nombre. Os dejo el código proque como lo he intentado no funciona. int main(int argc, char *argv[]) { bool state; //false when encrypt, true when decrypt bool ran = false; //false: not random generation, true: random generation bool fil; //false: not file, true, with file int cant = 0; //number of characters in random generation char text[MAX_TEXT]; //imput character char pass[MAX_PASS]; //Imput pass char in[35]; //input file char out[35]; //output file
//Flags options int i; for(i = 0; i < argc; i++) { if(strcmp(argv[i], "-o") == 0) { strcpy(out[0], argv[i + 1]); i++; } if(strcmp(argv[i], "-f") == 0) { strcpy(in[0], argv[i + 1]); fil = true; i++; } if(strcmp(argv[i], "-p") == 0) { strcpy(pass[0], argv[i + 1]); i++; } if(strcmp(argv[i], "-t") == 0) { strcpy(text[0], argv[i + 1]); fil = false; i++; } if(strcmp(argv[i], "-e") == 0) { state = false; i++; } if(strcmp(argv[i], "-d") == 0) { state = true; i++; } if(strcmp(argv[i], "-r") == 0) { ran = true; cant = atoi(argv[i + 1]); i++; } if(strcmp(argv[i], "-h") == 0) { helpbox(); //In methods.c return 0; } }
Espero que tengáis suficientes, si necesitais mas código está en https://github.com/JoseluCross/cryptoJKA/tree/master/unestable-versionMuchas gracias por adelantado
|
|
|
En línea
|
No hay problema sin solución, solo personas que no quieren resolverlo.
|
|
|
LaiaxanIV
Desconectado
Mensajes: 57
|
#include<stdio.h>
int main(int argc, char *argv[]) { FILE *fp; char ch; int i; for(i = 0; i < argc; ++i){ if(strcmp(argv[i],"-o")== 0){ fp=fopen(argv[i+1],"w"); } } char BUFF[] = "He escrito algo en este fichero \n"; fwrite(BUFF, 1, sizeof(BUFF), fp); fclose(fp); }
Este codigo lo que hace es crear un fichero con el nombre que le pasas como argumento después del flag -o y escribe en él, el contenido de BUFF. No se si es lo que buscas, si no, no te he entendido bien.
|
|
|
En línea
|
|
|
|
JoseluCross
Desconectado
Mensajes: 33
Conoceréis la Verdad, y la Verdad os hará libres
|
Eso que has puesto me serviría para el archivo de entrada, pero para la salida necesito el nombre porque lo he de enviar a otras funciones, si se puede hacer directamente mejor, pero no soy muy ducho con esto. Tambien necesito texto para pass o text. Gracias tambien por tu ayuda
|
|
|
En línea
|
No hay problema sin solución, solo personas que no quieren resolverlo.
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
El problema es que haces strcpy con destino a un caracter, no a la dirección de inicio de un array de carácteres. Es decir:
está mal. out es el array, out[0] es un carácter (char). lo que espera strcpy es
Y así con todos los demás arrays: in, pass y text.
|
|
|
En línea
|
|
|
|
JoseluCross
Desconectado
Mensajes: 33
Conoceréis la Verdad, y la Verdad os hará libres
|
Aunque ahora ya no tengo problemas con los tipos tengo violación del segmento del core generado ¿Por que puede ser esto?
|
|
|
En línea
|
No hay problema sin solución, solo personas que no quieren resolverlo.
|
|
|
LaiaxanIV
Desconectado
Mensajes: 57
|
Seguramente sea producido por el i++ que hay dentro de los if(). Quitalo y pon else if(). Deberia solucionarte el problema. Conseguiste ya lo de los ficheros?
|
|
|
En línea
|
|
|
|
JoseluCross
Desconectado
Mensajes: 33
Conoceréis la Verdad, y la Verdad os hará libres
|
Los ficheros ya los coje y los escribe, cambiando lo del i++ por el else if ya no da error en el core, ahora solo tengo problemas respecto a que falte un flag y tanto la entrada como la salida sean incorrectos, y me pasa que no funciona el resto del programa pero ya algo se va solucionando. Muchas gracias nuevamente por toda la ayuda
|
|
« Última modificación: 29 Marzo 2016, 08:27 am por JoseluCross »
|
En línea
|
No hay problema sin solución, solo personas que no quieren resolverlo.
|
|
|
LaiaxanIV
Desconectado
Mensajes: 57
|
De nada, para cualquier otra duda ya sabes!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Capturar el argumento del Main en una cadena?
Programación C/C++
|
joelmanx
|
6
|
4,819
|
10 Octubre 2010, 04:31 am
por joelmanx
|
|
|
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
|
ahaugas
|
3
|
5,633
|
13 Enero 2013, 14:09 pm
por ahaugas
|
|
|
Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Java
|
Javator
|
4
|
3,679
|
25 Febrero 2014, 17:09 pm
por Javator
|
|
|
[Resuelto] buscar la cadena '<?' dentro de otra cadena con javascript
Desarrollo Web
|
srccver
|
4
|
3,812
|
9 Abril 2015, 20:52 pm
por srccver
|
|
|
Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]
Programación C/C++
|
jazx
|
6
|
4,790
|
12 Mayo 2015, 03:56 am
por x64core
|
|