gpt4 book ai didi

c - 我的代码出了点问题

转载 作者:行者123 更新时间:2023-11-30 20:51:15 25 4
gpt4 key购买 nike

我正在尝试某些操作,但程序将因以下错误而崩溃:段错误:11有人有解决办法吗?

char str1[20]

printf("Enter Data: ");
scanf("%s", &str1);


printf("Entered Data: %s\n", str1);
int ex = strtod(str1, sizeof(str1));
printf("%s\n", ex);
if (ex == "1")
{
printf("1 Detected");
}

..如果提供了 1,它不会检测到数字 1..

最佳答案

主要问题在于以下三行:

int ex = strtod(str1, sizeof(str1));
printf("%s\n", ex);
if (ex == "1")

首先将字符串转换为 double 值,然后将其转换为整数。没关系,但您可能应该使用 strtol如果您想要一个整数值。

然而,第二行和第三行有很大缺陷。在第二行中,您将整数视为指针,即指向字符(也称为字符串)的指针。整数值不是指针,将其视为字符串会导致未定义的行为,并且可能会在这里发生崩溃。

然后是第三行,它在技术上并不是无效的,但它永远不会是真的,因为您将整数变量的值与指向字符串的指针进行比较,并且它们相等的机会微乎其微。

<小时/>

对于正确的(据我所知)行为,请尝试这样的事情

int ex;
scanf("%d", &ex); // Read an integer directly into the variablke
printf("%d\n", ex); // Print the integer as an integer
if (ex == 1) // Compare the integer variable to an integer literal
{
...
}

关于c - 我的代码出了点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638320/

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