交换变量并在C中打印出来
我已经编写了接受用户y/n输入的代码,但是在运行代码时,控制台只是打印出随机和不一致的字符交换变量并在C中打印出来,c,variables,swap,C,Variables,Swap,我已经编写了接受用户y/n输入的代码,但是在运行代码时,控制台只是打印出随机和不一致的字符 int main() { char var1 = "A"; char var2 = "$"; char user_answer; printf("Do you wanna swap var1 and var2? y/n \n "); scanf("%c", &user_answer); if (user_answer == 'y')
int main()
{
char var1 = "A";
char var2 = "$";
char user_answer;
printf("Do you wanna swap var1 and var2? y/n \n ");
scanf("%c", &user_answer);
if (user_answer == 'y')
{
var1 = "$";
var2 = "A";
printf("var1 is now: %c", &var1, "\n", "var2 is now: %c", &var2);
}
else
{
exit(0);
}
return 0;
}
我已经调试了几个小时了。出了什么问题,有什么改正吗?谢谢 首先,
char
不是字符串类型,它是一种整数类型,大小为1字节,可用于存储单个字符,因此您不需要更改
char var1 = "A";
to2,
与var2
相同,如果使用printf()
错误,请重试
printf("var1 is now: %s\nvar2 is now: %s\n", var1, var2);
及
原则上已经签字了
2使用
const
,因为它指向一个字符串文字,根据定义,它是只读的。首先char
不是字符串类型,它是一个整数类型,大小为1字节,可用于存储单个字符,因此您不需要更改
char var1 = "A";
to2,
与var2
相同,如果使用printf()
错误,请重试
printf("var1 is now: %s\nvar2 is now: %s\n", var1, var2);
及
原则上已经签字了
2使用
const
,因为它指向一个根据定义为只读的字符串文字。代码的基本问题是,您正在使用以下代码将指针隐式转换为整数:
char var1 = "A";
char var2 = "$";
...
要初始化字符,应使用单引号而不是双引号。不幸的是,C编译器没有给您错误,因为它实际上将“A”解释为指向一个字符的指针,他将该字符转换为整数,并且由于C中的字符是整数,因此不会产生任何错误
顺便说一下,您应该已经收到了表单的警告(使用gcc 5.3.0编译):
如果只想读取单个字符,可能需要使用函数,而不是使用
scanf
代码的基本问题是,使用以下代码将指针隐式转换为整数:
char var1 = "A";
char var2 = "$";
...
#include <stdio.h>
#include <stdlib.h>
int main()
{
char var1 = 'A';
char var2 = '$';
char user_answer;
printf("Do you wanna swap var1 and var2? y/n \n ");
scanf("%c", &user_answer);
if (user_answer == 'y')
{
var1 = '$';
var2 = 'A';
printf("var1 is now: %c\n",var1);
printf("var2 is now: %c\n",var2);
}
else
{
exit(0);
}
return 0;
}
要初始化字符,应使用单引号而不是双引号。不幸的是,C编译器没有给您错误,因为它实际上将“A”解释为指向一个字符的指针,他将该字符转换为整数,并且由于C中的字符是整数,因此不会产生任何错误
顺便说一下,您应该已经收到了表单的警告(使用gcc 5.3.0编译):
如果只想读取一个字符,可能需要使用函数,而不是scanf
\include
#include <stdio.h>
#include <stdlib.h>
int main()
{
char var1 = 'A';
char var2 = '$';
char user_answer;
printf("Do you wanna swap var1 and var2? y/n \n ");
scanf("%c", &user_answer);
if (user_answer == 'y')
{
var1 = '$';
var2 = 'A';
printf("var1 is now: %c\n",var1);
printf("var2 is now: %c\n",var2);
}
else
{
exit(0);
}
return 0;
}
#包括
int main()
{
char var1='A';
char var2='$';
字符用户的回答;
printf(“您想交换var1和var2吗?是/否\n”);
scanf(“%c”和用户回答);
如果(用户回答='y')
{
var1='$';
var2='A';
printf(“var1现在是:%c\n”,var1);
printf(“var2现在是:%c\n”,var2);
}
其他的
{
出口(0);
}
返回0;
}
#包括
#包括
int main()
{
char var1='A';
char var2='$';
字符用户的回答;
printf(“您想交换var1和var2吗?是/否\n”);
scanf(“%c”和用户回答);
如果(用户回答='y')
{
var1='$';
var2='A';
printf(“var1现在是:%c\n”,var1);
printf(“var2现在是:%c\n”,var2);
}
其他的
{
出口(0);
}
返回0;
}
字符常量是使用单引号'A'
而不是“A”
编写的。你的printf也错了。您正在输入地址而不是字符。char var1=“A”代码>…倾听编译器警告。这不是交换两个变量的最佳方法。搜索如何交换两个变量。@StoryTeller,谢谢!这解决了我的问题!字符常量是使用单引号'A'
而不是“A”
编写的。你的printf也错了。您正在输入地址而不是字符。char var1=“A”代码>…倾听编译器警告。这不是交换两个变量的最佳方法。搜索如何交换两个变量。@StoryTeller,谢谢!这解决了我的问题!