我创建了Date结构以将日期格式存储为date,month,year,这是用户输入的单行字符串,以空格分隔。
我想分割输入并相应地存储它。我使用了简单的c scanf()来拆分输入并将其存储在struct date中。但是,当我尝试打印数据时,它显示了一些垃圾值,我不知道丢失了什么。
帮助我清除此问题
我的
Input: 24 Jan 1980
output: 24 ? -978635323
这是我的C代码。
struct Date
{
int date;
char* month;
int year;
};
int main()
{
struct Date date[1];
char* string;
scanf("%s",string);
sscanf(string,"%d %s %d",&date[0].date,date[0].month,&date[0].year);
printf("%d %s %d",date[0].date,date[0].month,date[0].year);
return 0;
}
提前感谢
[char* string
是未初始化的指针,它不能容纳字符串,您需要分配内存,将其初始化为chars数组,或将其指向已分配内存的变量或指向现有chars数组。
您的编译器中的-Wall
标志应向您发出警告:
'字符串'在此函数中未初始化[-Wuninitialized]
[另一个问题是%s
仅获得一个字符串,当它找到空白时,它将停止读取,因此在您的情况下只能读取24
。