gpt4 book ai didi

c - 为什么我要 exc_bad_access 进行强制转换?

转载 作者:行者123 更新时间:2023-11-30 19:44:13 24 4
gpt4 key购买 nike

我正在用 C 编程,在将 int 转换为 char 时遇到问题。

我正在使用带有 Xcode 的 Mac 来编程 c。

代码是:

int main(){    
int t = 2;
printf("test %s\n", (char)t); //EXC_BAD_ACCESS
return 0;
}

我尝试了在许多帖子中找到的所有内容,我真的不知道发生了什么......有什么建议吗?

最佳答案

请将代码的目标包含在您的问题中,而不是下面的评论中。

如果你想要输出

test 2

您必须将 %s 更改为 %d

printf("test %d\n", t);

我猜您对%s有错误的想法。它不会告诉 printf 您希望将 int 作为字符串,它会告诉 printf 该参数是一个字符串!显然不是,所以你得到了异常(exception)。

如果您使用 %c,您将告诉 printf 函数您要将数字作为当前 ASCII 表中的字符输出。例如 65 是“A”。

如果你有像这样的串联情况

strcpy(str_buscar, "controlID='"); 
strcat(str_buscar, (char) t);
strcat(str_buscar, "'");

你需要 itoa 而不是类型转换:

strcat(str_buscar, (char) t); 

您需要以下内容:

char buffer[32]; // enough space for a "number as string"
itoa(t,buffer,10);
strcat(str_buscar, buffer);

(恕我直言)快捷方式是使用 sprintf “打印”到缓冲区

sprintf(str_buscar,"controlID='%d'",t);

sprintf 不打印到控制台,而是打印到给定的缓冲区。确保您的缓冲区 str_buscar 足够大。

关于c - 为什么我要 exc_bad_access 进行强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525150/

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