gpt4 book ai didi

c - 比较两个字符串时 strncmp 给出段错误

转载 作者:行者123 更新时间:2023-11-30 19:52:18 29 4
gpt4 key购买 nike

我正在尝试编写一个比较数字前两位数字的函数,并且由于 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。我还尝试迭代字符数组,但再次出现段错误。当我创建一个测试文件时,我实际上能够成功运行它,并且它全部运行,所以我完全迷失了

编辑#2:要添加上下文,该程序中有多个文件,并且一些库包含在其他文件中。一切都被#ifndef 正确包围。问题是文件编译的顺序会产生这个问题吗?

最佳答案

添加

#include <string.h>

在顶部。如果范围内没有原型(prototype),现代 C 中的过程调用可能会以各种方式出现错误行为。

关于c - 比较两个字符串时 strncmp 给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448522/

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