Escribir en archivo
Hola; tengo un programa que tiene la función de apagar la computadora a través de un archivo .bat, pero me problema es que cuando quiero escribir en el archivo pasa esto:
lo que debe escribir en el archivo
c:windowsrundll32.exe user.exe,exitwindows
lo que escribe el programa
simbolos irroconocibles aqui
c:windowsrundll32.exe user.exe,exitwindows
dentro del código los tengo así:
fputs("nnnc:windowsrundll32.exe user.exe,exitwindows",archivo);
Que debo hacer para que ponga la cadena completa y por que falla la escribirla?
lo que debe escribir en el archivo
c:windowsrundll32.exe user.exe,exitwindows
lo que escribe el programa
simbolos irroconocibles aqui
c:windowsrundll32.exe user.exe,exitwindows
dentro del código los tengo así:
fputs("nnnc:windowsrundll32.exe user.exe,exitwindows",archivo);
Que debo hacer para que ponga la cadena completa y por que falla la escribirla?
EL problema que tu tienes es que al tratar de escribir la cadena en el archivo el programa toma las barras como si el caracter siguiente fuera un caracter de control. Por ejemplo: t, avanzas una tabulación.
Entonces lo que debes hacer es colocar doble barra, entonces el programa interpreta como que tu quieres poner una barra y no un caracter de control.
Lo que escribes en el código debería ser algo así:
fputs("nnnc:\windows\rundll32.exe user.exe,exitwindows",archivo);
No lo he probado pero en teoría debería funcionar, pruebalo y luego me cuentas...
Entonces lo que debes hacer es colocar doble barra, entonces el programa interpreta como que tu quieres poner una barra y no un caracter de control.
Lo que escribes en el código debería ser algo así:
fputs("nnnc:\windows\rundll32.exe user.exe,exitwindows",archivo);
No lo he probado pero en teoría debería funcionar, pruebalo y luego me cuentas...
Disculpa pero tengo un nuevo problema cuando creo un archivo y trato de modificarlo no me respeta los saltos de línea, sabes por qué?
por ejemplo
archivo=fopen("c:\apagar.bat","a+b");
if(archivo!=NULL)
{
fputs("n@echo=off");
fputs("n echo apagando sistema n");
}
lo que debe escribir es esto:
.... salto de linea
@echo=off
.... salto de linea
echo apagando sistema
.... salto de linea
lo que me sale es:
.... salto de linea sale un cuadro negro@echo=off ...otro cuadro negro echo apagando sistema ..vuelve a salir un cuadro negro
Gracias por la ayuda
por ejemplo
archivo=fopen("c:\apagar.bat","a+b");
if(archivo!=NULL)
{
fputs("n@echo=off");
fputs("n echo apagando sistema n");
}
lo que debe escribir es esto:
.... salto de linea
@echo=off
.... salto de linea
echo apagando sistema
.... salto de linea
lo que me sale es:
.... salto de linea sale un cuadro negro@echo=off ...otro cuadro negro echo apagando sistema ..vuelve a salir un cuadro negro
Gracias por la ayuda
Para Windows (o DOS), cuando el archivo se abre en modo binario, necesitas especificar el salto de línea más el retorno de carro:
fputs("rn@echo=off", archivo);
fputs("rn echo apagando sistema rn", archivo);
Si lo abres en modo texto, el compilador se encargará de añadir los r por ti (aunque el editor no los muestre).
Alejandro
fputs("rn@echo=off", archivo);
fputs("rn echo apagando sistema rn", archivo);
Si lo abres en modo texto, el compilador se encargará de añadir los r por ti (aunque el editor no los muestre).
Alejandro
