0
이 프로그램에서는 fgets() 또는 gets()를 사용하여 문자열 c [] (add_diary())에 입력 할 수 없으며 프로그램은 입력을 건너 뜁니다 프로세스, 내가 뭘 잘못하고 있는지 말해줘. 나는 그것을 시작할 수 없다. 일기에서 가장 중요한 것은 글을 쓰는 것이고, '쓰지 마라. 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(){
}
새로운 라인이 무엇을 의미하며 그 새로운 라인은 어디에서 오는가? –
및 add_diary()에서 scanf() 만 작동합니다. –