打印字符串指针导致C中的输出损坏

打印字符串指针导致C中的输出损坏,c,string,function,pointers,printf,C,String,Function,Pointers,Printf,部分不起作用。 一些数据也被破坏了 printf("%02d:%02d %d %s %s\n",hour,min,calendar[i].importance, calendar[i].title, calendar[i].description); 我认为有些指针是问题所在。 有什么问题吗?你用这个吗 Input : 20180927 0900 0 iiii Output: 2018.09.27. 09:00 0 i i Process returned 0 (0x0)

部分不起作用。 一些数据也被破坏了

printf("%02d:%02d  %d  %s  %s\n",hour,min,calendar[i].importance, calendar[i].title, calendar[i].description);
我认为有些指针是问题所在。 有什么问题吗?

你用这个吗

Input : 20180927 0900 0 iiii  
Output: 2018.09.27.  09:00  0  i  i  
Process returned 0 (0x0)   execution time : 12.588 s
读这个

scanf("%d %d %d %c %c", &calendar[i].date, &calendar[i].time, &calendar[i].importance, calendar[i].title, calendar[i].description);
所以你得到一个数字,一个数字,一个数字,一个字符('i')和一个字符('i')。
您是否注意到将数字与前导0和八进制数字混淆的风险?
在两个预期字符之间的格式字符串中的空白,将被解析为“采取任何当前空白”,对于“IIII”是“空白”。 您将在输入流“ii\n”中离开;这将混淆下一次扫描数字的尝试并使其失败。即,下一次扫描尝试的返回值(在代码中忽略)将为0,而它应为5

要修复此问题,请阅读通过scanf进行复杂输入扫描时可能出现的所有问题:


然后改为可以读取字符串而不是字符,但可能不能读取scanf()。

预期的输出是什么?我觉得还可以。你调试过数据了吗?真的只有打印问题吗?非常感谢你的回答。我使用“scanf”(%d%d%d%s%s“,&calendar[I]。日期,&calendar[I]。时间,&calendar[I]。重要性,&calendar[I]。标题,&calendar[I]。说明);”解决了此问题。现在它扫描字符串而不是字符。
scanf("%d %d %d %c %c", &calendar[i].date, &calendar[i].time, &calendar[i].importance, calendar[i].title, calendar[i].description);
20180927 0900 0 iiii
^        ^    ^ ^^
%d       %d  %d cc