0

No se porque me salta el scanf si alguien me podria ayudar estaria agradecido (Esta marcado lo que no lee), debe ser algun pequeño error en el codigo pero la verdad es que no encuentro el error por mi mismo asi que por eso mismo pido ayuda . Si hay algo que no se entiende lo contestare lo antes posible pero creo que el programa es bastante sencillo asi que yo creo que no hara falta.

#include <string.h>
void abrirfichero(char A,char B[],FILE *fichero,char C,char D[100]){
do{
printf("Escribe si quieres que sea de entrada o salida:");
scanf("%c",&A);

if (A=='E'){
    printf("HOla");
}
else if(A=='S'){
    printf("Escribe el nombre del archivo:");
    scanf("%s",B);
    fichero = fopen(B, "r"); 
if (fichero==NULL){
 perror("No puedo abrir el fichero");

}else{
 printf("He podido abrir el fichero.\n");
}
fseek( fichero, 0, SEEK_END );
if (ftell( fichero ) != 0 )
{
  printf("Quieres borrar el archivo? S/N:"); //Aqui es el problema//
    scanf("%c",&C);

if(C=='S'){
    fclose(fichero);
    fichero = fopen(B, "w");
    printf("Escribe lo que quieres poner:");
    scanf("%s",D);
    fwrite(D , 1 , 100 , fichero );

}
else if(C=='N'){

}
}

}

}
while(A!='E' && A!='S');
}

void main(){
    char A,B[20],C,D[100];
    FILE *fichero;
abrirfichero(A,B,fichero,C,D);


}```
Wow
  • 101
  • 4
  • cual de todos los scanf es el que salta??? – Bryro Jan 26 '22 at 14:25
  • Es un problema común. `scanf` lee hasta que se encuentra un salto de línea, pero no el salto. Debes quitarlo del buffer con `getchar()`. – Mateo Jan 26 '22 at 14:33
  • 1
    Muchas veces se ha tratado este problema en este foro. El problema reside que cuando vas a leer una variable de tipo `char` mediante `scanf()`, es bastante común que se te quede el carácter de salto de línea `\n` en la función, y por lo tanto no te detecte el carácter que quieres. Para ello, cuando vayas a utilizar la función `scanf()` para la obtención de un solo carácter es recomendable añadir un espacio antes del `%c`. Se te quedaría de este modo: `scanf(" %c", &caracter)`. – Londo Jan 26 '22 at 16:19

0 Answers0