gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:48:16 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>

struct cal {
int date;
int time;
int importance;
char title[256];
char description[256];
};

int count;


void change_Cal (struct cal *calendar) {
for (long long int i = 0; i < count; i++) {

int year = 0, month = 0, day = 0;
year = calendar[i].date / 10000;
month = (calendar[i].date - 10000 * year) / 100;
day = calendar[i].date % 100;
printf("%04d.%02d.%02d. ", year, month, day);

int hour, min;
hour = calendar[i].time / 100;
min = calendar[i].time % 100;

printf("%02d:%02d %d %s %s\n",hour,min,calendar[i].importance, calendar[i].title, calendar[i].description);

}

}

int main() {
struct cal *calendar;

//struct cal calendar[1024] = { 0, };
printf("please input the number of the calender.\n>");
scanf("%d", &count);
calendar = (struct cal *)malloc(sizeof(struct cal)*count);
calendar = (struct cal *)calloc(count, sizeof(struct cal));

printf("input calendars.\n");
for (int i = 0; i < count; i++) {
printf(">");
scanf("%d %d %d %c %c", &calendar[i].date, &calendar[i].time, &calendar[i].importance, calendar[i].title, calendar[i].description);
printf("\n");
}
change_Cal(calendar);
}

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);

阅读本文

20180927 0900 0 iiii
^ ^ ^ ^^
%d %d %d cc

所以你得到一个数字,一个数字,一个数字,一个字符('i')和一个字符('i')。
您是否注意到将带有前导 0 的数字与八进制数混淆的风险?
格式字符串中两个预期字符之间的空白将被解析为“采用任何存在的空白”,对于“iiii”来说是“无空白”。
您将在输入流中留下“ii\n”;这将混淆下一次扫描号码的尝试并使其失败。 IE。下一次扫描尝试的返回值(您在代码中忽略)将为 0,而它应该为 5。

要修复通过 scanf 进行复杂输入扫描时可能出错的所有问题,请阅读:
http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html

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

关于c - 打印字符串指针导致 C 中的输出损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539960/

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