简单的scanf无法读取和解析我的输入

问题描述 投票:0回答:1

我创建了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;
}

提前感谢

c scanf
1个回答
0
投票

[char* string是未初始化的指针,它不能容纳字符串,您需要分配内存,将其初始化为chars数组,或将其指向已分配内存的变量或指向现有chars数组。

您的编译器中的-Wall标志应向您发出警告:

'字符串'在此函数中未初始化[-Wuninitialized]

[另一个问题是%s仅获得一个字符串,当它找到空白时,它将停止读取,因此在您的情况下只能读取24

© www.soinside.com 2019 - 2024. All rights reserved.