Sscanf为命令行拍摄的字符串

时间:2017-08-14 13:45:29

标签: c arrays pointers struct c-strings

我对这个项目有疑问,我试着在论坛上搜索答案,但我一无所获。

struct orario {
int hours;
int minutes;
int seconds;
char *format;
}orario1;

int main(int argc, char *argv[]) {
sscanf(argv[1],"%d:%d:%d %s",&orario1.hours,&orario1.minutes,&orario1.seconds,orario1.format);

printf("%d:%d:%d %s",orario1.hours,orario1.minutes,orario1.seconds,orario1.format);

输出对于数字部分是正确的,但字符串(例如AM或PM)是意外的(null)。

我无法识别我的错误,有人可以找到并告诉我吗?!

谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码具有未定义的行为,因为char format[8]; 是未初始化的指针。

使用

%7s

和{{1}}。并在依赖具有值的变量之前检查返回值。