gpt4 book ai didi

c - Sscanf 和 fgets 在 C 中的正确用法 - 注意 : edited

转载 作者:行者123 更新时间:2023-11-30 20:15:03 26 4
gpt4 key购买 nike

我正在尝试制作一个用于制作公历的大程序,但目前,我只是尝试使用解析输入日期的函数。一些函数(sscanf 和 fgets)我不太确定如何将它们与程序的其余部分一起使用。这是我的尝试:

 int main(int arg, char *argv[]) {

/*
* Request a date from the user
* in format DD-MM-YYYY, DD.MM.YYYY or DD/MM/YYYY
*/
date d;
char input_date[20];
fgets(input_date, 20, stdin);

printf("Enter your date of birth in the form DD/MM/YYYY:");
//fgets(d, 100, stdin);
sscanf(input_date,"%d", &d.day, &d.month, &d.year);
if (leapYearFeb(d.year, d.month)) {
d.day = d.day + 1;
}

if (parse_formatted_date(input_date, &d))
printf("date: %s\ndd = %d, mm = %d, yy = %d\n", input_date, d.day, d.month, d.year);
return 1;

return 0;
}

这是我调用 parse_formatted_date 的 date.h 头文件:

#ifndef DATE_H_
#define DATE_H_

// Define the structure date.
typedef struct {
int day;
int month;
int year;

} date;

// Parses a string 'formatted_date' representing a date
// in format DD-MM-YYYY, DD.MM.YYYY or DD/MM/YYYY
// into a structure date 'parsed_date'.
void parse_formatted_date(char * formatted_date, date * parsed_date) {
const int ret = sscanf(formatted_date, "%d-%d-%d",
&parsed_date->day,
&parsed_date->month,
&parsed_date->year);
//printf("Day: %d, Month: %d, Year: %d\n", d.day, d.month, d.year);
//return ret == 3;

}
#endif

目前,我遇到的错误是:

main_Assignment4.c: In function ‘main’:
main_Assignment4.c:22: error: void value not ignored as it ought to be

不确定这些错误的含义或如何修复?谢谢!

最佳答案

修改答案

// Parses a string 'formatted_date' representing a date
// in format DD-MM-YYYY, DD.MM.YYYY or DD/MM/YYYY
// into a structure date 'parsed_date'.
void parse_formatted_date(char * formatted_date, date * parsed_date)
{
sprintf(formatted_date, "%d-%d-%d",
parsed_date->day,
parsed_date->month,
parsed_date->year);
}


int main(int arg, char *argv[]) {

/*
* Request a date from the user
* in format DD/MM/YYYY
*/
date d;
char input_date[20];
printf("Enter your date of birth in the form DD/MM/YYYY:");
fgets(input_date, 100, stdin);
sscanf(input_date,"%d/%d/%d", &d.day, &d.month, &d.year);

parse_formatted_date(input_date, &d);

printf("date: %s dd = %d, mm = %d, yy = %d\n", input_date, d.day, d.month, d.year);
return 0;
}

关于c - Sscanf 和 fgets 在 C 中的正确用法 - 注意 : edited,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22323704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com