0
このプログラムでは、fgets()またはgets()を使用して、文字列c [](add_diary()内)に入力を取得できません。私が間違っていることを教えてください。私はそれを始めることができません。日記の中で最も重要なことは書くことです。事は「あなたは書くことができません、cuz 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(){
}
新しい行が何を意味し、その新しい行はどこから来ますか? –
であり、scanf()のみがadd_diary()で動作しています。 –