gpt4 book ai didi

仅在 for 循环内部的 C 指针算术段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:22 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来检查数字是否为回文。 (欧拉项目)。我决定编写一个将数字转换为字符串的函数,并使用两个指针在字符串中向前和向后迭代。但是,在尝试添加到 for 循环内的指针时,我不断遇到段错误。

int isPalindromeNumber(int number)
{
char* str;
itoa(number, str, 10);
int length = strlen(str);
int isPalindrome = 1;

char* forwardPtr = str;
char* backwardPtr = str + (length - 1);

for (int i = 0; i < length / 2; i++)
{
if (*forwardPtr != *backwardPtr)
{
isPalindrome = 0;
}

// Segfault here.
forwardPtr += 1;
backwardPtr -= 1;
}

return isPalindrome;
}

但是,如果我尝试在 for 循环之前递增/递减这些指针,则没有问题。我也尝试将 for 循环限制为仅一次迭代,但它仍然会出现段错误。

我觉得这是一个简单的问题,但我似乎找不到任何与此类似的问题。因此,我们将不胜感激任何帮助或重定向!

最佳答案

改变

  char* str;

 char str[11];

在您的代码中,您有一个指向任何地方的指针。此更改使本地缓冲区足够大以容纳 32 位整数的字符串版本

关于仅在 for 循环内部的 C 指针算术段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428317/

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