请问怎么解决C语言中打印字符串结果为数字的问题

我是一个c语言初学者,教材为《C Primer Plus(第六版)》,代码编辑器为Clion。
此程序是教材第二章2.12第一题。
本题要求输出以下的结果。

姓名 姓氏
姓名
姓氏
姓名 姓氏

第一行使用一个printf()函数,第二行第三行使用一个printf()函数,第四行使用两次printf()函数。
我的代码如下:

#include 
int main(void)
{
    int name,surname;//设置两个变量,name表示姓名,surname表示姓氏
    name = 'jack';
    surname = 'smith';
    printf("%d %d\n",name,surname);
    printf("%d\n%d\n",name,surname);
    printf("%d",name);
    printf("%d",surname);
    return 0;
}

但程序的运行结果为

1784767339 1835627624
1784767339
1835627624
17847673391835627624
进程已结束,退出代码0

同时,CLion提示了这两个警告。
①Character constant too long for its type:6
②Multi-character charater constant:6
请问我该如何修正代码?

您的代码有几个问题需要修正:

1.在 C 语言中,单引号 ' ' 用于表示字符常量,例如 'a' 表示字符 a,而双引号 " " 用于表示字符串常量,例如 "hello" 表示字符串 hello。在您的代码中,name 和 surname 被定义为整型变量,但是赋值时使用了单引号 ' ',这会将字符常量转换成整型值。为了正确赋值,请使用双引号 " ",例如:


char name[] = "jack";
char surname[] = "smith";

这里使用字符数组来保存姓名和姓氏,因为姓名和姓氏是由多个字符组成的字符串。

2.在第一个 printf() 函数中,您需要使用 %s 格式说明符来输出字符串变量,例如:


printf("%s %s\n", name, surname);

3.在第四行中,您需要使用两个 printf() 函数分别输出姓名和姓氏,例如:


printf("%s ", name);
printf("%s\n", surname);

综上所述,您的代码应该修改为:


#include <stdio.h>

int main(void)
{
    char name[] = "jack";
    char surname[] = "smith";

    printf("%s %s\n", name, surname);
    printf("%s\n%s\n", name, surname);
    printf("%s ", name);
    printf("%s\n", surname);

    return 0;
}

希望这个回答能够帮助您解决问题。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^