2016-10-26 3 views
0

В этой программе я не могу получить ввод в строке c [] (в add_diary()) с помощью fgets() или gets(), программа просто пропускает вход процесс, пожалуйста, скажите мне, что я делаю неправильно. Я просто не могу начать. В дневнике самое главное - писать, а вещь - «вы не можете писать, потому что fgets() не работает».Невозможно взять ввод в строке

#include <stdio.h> 
#include <stdlib.h> 

void access(); 
void diary_main(char user[],char pass[]); 
void diary_login(); 
void add_diary(unsigned dd, unsigned mm, unsigned yy); 
void add_entry(unsigned choice); 
void del_entry(unsigned dd, unsigned mm, unsigned yy); 
void update_entry(unsigned dd, unsigned mm, unsigned yy); 
void logout(); 

void main() { 
    access(); 
} 

void access() { 
    char password[10],username[20], ch; 
    int i; 
    printf("Enter User name: "); 
    gets(username); 
    printf("Enter the password (8 characters):"); 
    for(i=0;i<8;i++) { 
      ch = getch(); 
      password[i] = ch; 
      ch = '*' ; 
      printf("%c", ch); 
    } 
    password[i] = '\0'; 
    /*printf("\nYour password is :"); 
    for(i=0;i<8;i++) { 
    printf("%c", password[i]);*/ 
    diary_main(username, password); 
} 

void diary_main(char user[],char pass[]) { 
    /*FILE *fptr; 
    //char file_name[10]; 
    //sprintf(file_name, "user%s.txt", user); 
    fptr = fopen("login.txt", "w"); 
    fprintf(fptr,"\n%s",user); 
    fclose(fptr);*/ 
    diary_login(); 
} 

void diary_login() { 
    unsigned choice; 
    printf("\nEnter your choice\n"); 
    printf("1. Add Diary Entry\n"); 
    printf("2. Delete Diary Entry\n"); 
    printf("3. Update Diary Entry\n"); 
    printf("4. Logout\n"); 
    printf("5. Exit\n"); 
    scanf("%d", &choice); 
    if (choice == 1) { 
     add_entry(choice); 
    } 
    else if (choice == 2) { 
     add_entry(choice); 
    } 
    else if (choice == 3) { 
     add_entry(choice); 
    } 
    else if (choice == 4) { 
     logout(); 
    } 
    else if (choice == 5) { 
     exit(1); 
    } 
    else { 
     //printf("%d", choice); 
     printf("Enter correct choice"); 
     diary_login(); 
    } 
} 

void add_entry(unsigned choice) { 
    unsigned dd, mm, yy; 
    printf("Enter date (DD/MM/YY):"); 
    scanf("%u/%u/%u", &dd, &mm, &yy); 
    //printf("%u/%u/%u", dd, mm, yy); 
    if ((dd>31 || mm>12) || (dd>29 && mm == 2) || (yy!=17)) { 
     printf("\nEnter correct date\n"); 
     add_entry(choice); 
    } 
    else { 
     //printf("else"); 
     switch(choice) { 
      case 1: add_diary(dd, mm, yy); 
        break; 
      case 2: del_entry(dd, mm, yy); 
        break; 
      case 3: update_entry(dd, mm, yy); 
        break; 
     } 
    } 
} 

void add_diary(unsigned dd, unsigned mm, unsigned yy) { 
    //printf("add_diary"); 
    long file_extra; 
    char file_name[50], c[5000]; 
    FILE *fptr; 
    file_extra = (((dd*100)+mm)*100)+yy; 
    sprintf(file_name, "diary%ld.txt", file_extra); 
    fptr = fopen(file_name, "w"); 
    /*if(fptr == NULL){ 
     printf("Error"); 
     exit(1); 
    }*/ 
    printf("\nStart writing diary..\n"); 
    scanf("%s", c); 
    //fgets(c, sizeof(c), stdin); 
    //gets(c); 
    fprintf(fptr,"%s",c); 
    fclose(fptr); 
} 

void del_entry(unsigned dd, unsigned mm, unsigned yy) { 
    long file_extra; 
    char file_name[50]; 
    file_extra = (((dd*100)+mm)*100)+yy; 
    sprintf(file_name, "diary%ld.txt", file_extra); 
    int status; 
    status = remove(file_name); 
    if(status == 0) { 
     printf("Entry deleted successfully.\n"); 
    } 
    else { 
     printf("Unable to delete the file\n"); 
    } 
} 
void update_entry(unsigned dd, unsigned mm, unsigned yy) { 
    long file_extra; 
    char file_name[50], c[5000]; 
    file_extra = (((dd*100)+mm)*100)+yy; 
    sprintf(file_name, "diary%ld.txt", file_extra); 
    FILE *fptr; 
    fptr = fopen(file_name, "w"); 
    printf("\nStart editing diary..\n"); 
    scanf("%s", c); 
    //fgets(c, sizeof(c), stdin); 
    //gets(c); 
    fprintf(fptr,"%s",c); 
    fclose(fptr); 
} 
void logout(){ 

} 
+0

Что вы подразумеваете под новой линией и откуда эта новая линия? –

+0

и только scanf() работает в add_diary() –

ответ

0

В моем понимании это как зсапЕ работает:

Допустим, у вас есть вход «Hello World», что на самом деле принес в это «Hello World \ N». Вы можете обойти это, выбирая n-1 в массиве ('\ n') и заменяя его завершающим ('\ o').

Смежные вопросы