|
473
|
Programación / Programación C/C++ / socket siempre me devuelve -1 (Solucionado)
|
en: 27 Noviembre 2018, 03:57 am
|
Hola a todos anteriormente ya habia trabajado con sockets en C, sin embargo no estoy seguro si es mi Computadora actual la del problema: #include<winsock2.h> #include<stdio.h> int main() { int s; if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { return 1; } }
En mi caso al compilar y ejecutar el codigo anterior siempre me devuelve menos -1 C:\> gcc -o test.exe test.c -lws2_32 C:\> test.exe Valor -1 socket: No error
El codigo original es mas extenso, pero incluso con ese fragmento basico de codigo me devulve error... Version de gcc Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe Target: mingw32 Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls Thread model: win32 gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
Voy a tratar de actualizar el mingw Saludos
|
|
|
475
|
Programación / Programación C/C++ / Re: Necesito ayuda con mi código marca errores que no comprendo
|
en: 26 Noviembre 2018, 07:20 am
|
Fancy: elaborate in structure or decoration. "the furniture was very fancy" El punto es por que adornar el programa con borrados de pantalla y demas cosas si apenas estas aprendiendo lo basico. Mi recomendacion es que de momento quites todos esos systems("cls") que ademas solo funcionan en windows. Y te concentres en pequeños ejemplos, como paso de parametros a funciones, paso de valores por referencia, apuntadores y cosas basicas. Saludos!
|
|
|
476
|
Programación / Programación C/C++ / Re: Necesito ayuda con mi código marca errores que no comprendo
|
en: 26 Noviembre 2018, 06:26 am
|
main.c:87:26: warning: passing argument 2 of ganador1 makes pointer from integer without a cast [-Wint-conversion] ganador=ganador1(ganador,tablero1[j]); ^ main.c:4:9: note: expected int (*)[7] but argument is of type int int ganador1(int n,int tablero[6][7]);
Es un warning no es un error te avisa de que algo no esta bien, y realmente no lo esta. Es un solo numero Entero, aque que esta en la posicion [j], pero la funcion quiere recibir todo el arreglo. Para corregir esto deberias de cambiar o la funcion o lo que le estes mandando a la funcion.
Ejemplo mandandole toda el arreglode numeros a la funcion ganandor1, y no solo un solo valor entero.
ganador=ganador1(ganador,tablero1); prinft("El jugador 1 es el que gana"); Es printf lo escribiste mal main.c:136:30: warning: passing argument 2 of ganador2 makes pointer from integer without a cast [-Wint-conversion] validacion2=ganador2(ganador,tablero1[j]); ^ main.c:5:9: note: expected int (*)[7] but argument is of type int int ganador2(int n,int tablero[6][7]); ^
Mismo error del primero system("cls"); No uses SYSTEM solo para borrar la Pu74 pantalla, en lugar de usar funciones fancy para borrra la pantalla, deberias de aprender a programar y quitarle los adornos al programa. ^ main.c:18:1: warning: ignoring return value of scanf, declared with attribute warn_unused_result [-Wunused-result] scanf("%i",&opciones); ^ main.c:23:5: warning: ignoring return value of system, declared with attribute warn_unused_result [-Wunused-result] system("cls"); ^ main.c:54:1: warning: ignoring return value of scanf, declared with attribute warn_unused_result [-Wunused-result] scanf("%i",&jugador1); ^ main.c:93:1: warning: ignoring return value of system, declared with attribute warn_unused_result [-Wunused-result] system("cls"); ^ main.c:103:1: warning: ignoring return value of scanf, declared with attribute warn_unused_result [-Wunused-result] scanf("%i",&jugador2); ^ main.c:142:1: warning: ignoring return value of system, declared with attribute warn_unused_result [-Wunused-result] system("cls"); ^ main.c:155:1: warning: ignoring return value of scanf, declared with attribute warn_unused_result [-Wunused-result] scanf("%i",&volverajugar); ^ /var/tmp/ccOyAiBU.o: In function `main': main.c:(.text.startup+0xb0): undefined reference to `prinft' main.c:(.text.startup+0x503): undefined reference to `prinft' collect2: error: ld returned 1 exit status
Puedes omitir todos los errores del Scanf son simples warning. Saludos
|
|
|
478
|
Programación / Programación C/C++ / Re: Duda cstdlib y srand (C++)
|
en: 25 Noviembre 2018, 08:11 am
|
A mi me da error: C:\codigos>g++ -o t.exe t.cpp t.cpp: In function 'int main()': t.cpp:12:21: error: 'time' was not declared in this scope srand(time(NULL));
C:\codigos>g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe Target: mingw32 Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls Thread model: win32 gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
A de ser algo de tu compilador que la incluye, alguna vez me paso algo similar que sin incluir explícitamente en biblioteca de funciones, el compilador no marcaba errores y generaba el exe sin problemas. Saludos
|
|
|
479
|
Programación / Programación C/C++ / Archivar directorio completo en un solo archivo.
|
en: 25 Noviembre 2018, 07:06 am
|
Realice un programa que pueda recibir parámetros desde la linea de comandos, dicho programa recibirá un directorio en el disco duro o un archivo Si es Directorio.. - Comprobar que el directorio sea valido.
- Comprobar que sea distinto al directorio actual.
- Listar los archivos y pesos en bytes en el directorio mencionado.
- Realizar una copia de seguridad de dichos archivos, con las siguientes características
- Todos lo archivos del directorio se deben de guardar en un unico archivo llamado directorio.dir donde directorio se debe sustituir por el nombre del directo indicado en primer lugar. Ejemplo "C:\temp\codigos\" el archivo se debe de llamar codigos.dir
- Se debera de tener un registro también en archivo (index.dat), que contenga Nombre, donde comienza y cuando espacio ocupa cada archivo del directorio en el nuevo.
- Se debera realizar también una validación tipo checkum de cada archivo, utilice el sistema Hash de su preferencia para hacer esta validación.
Si es archivo, deberá de ser alguno en terminación .dir - Comprobar que exista
- Que este completo segun la lista de archivos que previamente guardamos en el index.dat
- Debera de Extraerlo en un directorio indicado por el usuario (En un segundo parametro al programa) distinto al directorio Original.
El programa podrá ser creado en C o C++ Deberá de utilizar en cualquier momento la menor cantidad de memoria posible y ser lo bastante rápido para pode competir con otros. El post es solo para darle un poco mas de movimiento a este subforo de programación en C/C++. Si tienen dudas sobre una parte en especifico, pueden de preferencia abrir un nuevo tema, con la duda en especifico. Si alguno quiere participar comentelo aqui, asi mismo también pueden sugerir mas features para el programa. Ya que opciones hay varias. La intención no es reinventar la rueda, programas similares ya existen Tipo (TAR), la intención es que quien este aprendiendo C o C++ pueda retarse asi mismo con algo que en un futuro pueda reutilizar. Y no se diga la experiencia. Saludos
|
|
|
480
|
Programación / Programación C/C++ / Re: ¿Queda algo en el Buffer de Entrada stdin?
|
en: 25 Noviembre 2018, 00:02 am
|
A raíz de este post me he puesto a pensar en todo esto. Ya que C viene del UNIX y en UNIX todo son archivos y por tanto stdin es un archivo ¿qué tal si llevamos el puntero de stdin hasta el final y nos saltamos todo lo que hay dentro?
Incluso acepta una única pulsación de intro.
No habia intentado eso, pero funciona muy bien!, yo intente con la funcion feof para tratar de determinar si estabamos en el final del archivo, pero no funciono para STDIN. Con fseek si funciona!!! #include<stdio.h> int main() { char temporal[10]; printf("Ingrese una cadena: "); fgets(temporal ,10,stdin ); printf("Cadena Leida: %s\n",temporal ); fseek(stdin , 0, SEEK_END ); printf("Ingrese otra cadena: "); fgets(temporal ,10,stdin ); printf("Cadena Leida: %s\n",temporal ); }
Saludos!
|
|
|
|
|
|
|