gpt4 book ai didi

c - 在函数中交换字符指针

转载 作者:行者123 更新时间:2023-11-30 19:04:57 25 4
gpt4 key购买 nike

下面的 C 代码是一个无限循环。但是,如果我们将 void hello() 替换为 main(),它就可以正常工作。

这是为什么以及如何解决它?

#include <stdio.h>
void charSwap(char** a, char** b){
char *c = *a;
*a = *b;
*b = c;
}
void hello(){
char **a,**b;
int i;
printf("A = ");
scanf("%c",&a);
getchar();
printf("B = ");
scanf("%c",&b);
getchar();
if(a>b) charSwap(&a,&b);
for (i=a;i<=b;i++)
{
printf("%c : %d , %X\n",i,i,i);
}
}
int main(){
hello();
return 0;
}

最佳答案

您的代码中有很多错误会调用未定义的行为。例如 -

scanf("%c",&a);

scanf 需要 char* 作为 %c 的第二个参数。但是您正在传递一个 char***

charSwap(&a,&b); 的函数调用相同。该函数需要您定义的 char** 。但是您再次传递 char***

如果我正确理解您的代码,您只需要存储 char,并不真正需要 char**

所以一个简单的修复方法就是替换

char **a,**b;

char a, b;

这是一个working demo与修复。

关于c - 在函数中交换字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50849811/

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