我正在尝试编写一个比较数字的前两位数字的函数,并且由于 itoa 不可用,因此我使用 sprintf 之前通过谷歌搜索找到的首先将数字转换为字符串,然后比较每个数字。出于某种奇怪的原因,我在运行它时遇到了段错误。我尝试了同样的事情,但使用了像 strncmp("100", "101", 2) 这样的实际字符串,它没有给出任何问题。问题是由于两个 sprintf 语句以某种方式弄乱了 str2。我找不到任何地方为什么会发生这种情况以及我能做些什么来解决它。在这里张贴之前花了 2 个小时。如果可能的话,将不胜感激
int exists;
int id1 = 100;
int id2 = 101;
char str1[12];
char str2[12];
sprintf(str1, "%d", id1);
sprintf(str2, "%d", id2);
exists = strncmp(str1,str2,2);
printf("Res is %d\n", exists);
编辑:我试过 printf str1 和 str2 ,它们分别显示 100 和 101 。我也尝试通过 char 数组进行迭代,但再次出现 seg 错误。当我创建一个测试文件并且它全部运行时,我实际上能够成功运行它,所以我完全迷失了
编辑#2:要添加上下文,该程序中有多个文件,并且一些库包含在其他文件中。一切都被#ifndef 正确包围。问题是文件编译的顺序会产生这个问题吗?