吸鼠霸王 发表于 2020-9-14 22:06:19

如下面求解

char c="abcd"的“”其中一个作用是返回abcd的地址给c 并不是将abcd赋值给c那为什么在printf(“%s”,c)中能直接打印出abcd 不用给c加上取值符号 即printf("%s",*c)呢 www

吸鼠霸王 发表于 2020-9-14 22:19:33

求助求助求助呜呜呜呜呜呜呜

ba21 发表于 2020-9-14 22:20:52

我看过字符串常量和字符数组
就是没有看过 char c = "abcd"

吸鼠霸王 发表于 2020-9-14 22:23:58

ba21 发表于 2020-9-14 22:20
我看过字符串常量和字符数组
就是没有看过 char c = "abcd"


sorry是char c[]="abcd"

ba21 发表于 2020-9-14 22:36:44

吸鼠霸王 发表于 2020-9-14 22:23
sorry是char c[]="abcd"

char c[]="abcd" == char c="abcd\0"

%s 从指定地址处获取字符中,直到遇到\0结束。
1,c 本来就是一个地址。printf("%s\n",地址);
2,如果 *c 那就是 一个值 而不是地址,printf("%s\n",值 );
3, %s要的是地址。

#include <stdio.h>

int main()
{
       
        char c[] ="abcd";
        printf("%c\n", *c);
        printf("%c\n", 'a');

        // 报错
        printf("%s\n", 'a');

        return 0;
}

吸鼠霸王 发表于 2020-9-14 22:59:31

ba21 发表于 2020-9-14 22:36
char c[]="abcd" == char c="abcd\0"

%s 从指定地址处获取字符中,直到遇到\0结束。


哦哦%s是从指定地址处获取字符那请问%d是直接获取数据吗

ba21 发表于 2020-9-14 23:13:08

吸鼠霸王 发表于 2020-9-14 22:59
哦哦%s是从指定地址处获取字符那请问%d是直接获取数据吗

这个%相关用法上网查格式化输出。

风过无痕1989 发表于 2020-9-15 02:06:49

吸鼠霸王 发表于 2020-9-14 22:59
哦哦%s是从指定地址处获取字符那请问%d是直接获取数据吗

%d                              十进制有符号整数
%u                              十进制无符号整数
%f                               浮点数%s 字符串
%c                              单个字符
%p                              指针的值
%e                              指数形式的浮点数
%x, %X                      无符号以十六进制表示的整数(多用来输出地址)
%o                              无符号以八进制表示的整数
%g                              以%f%e中较短的输出宽度输出单、双精度实数
%e,%E                        以指数的形式输出
%lf                              以dudouble型进行输入或输出
%lu                              32位无符号整数
%llu                              64位无符号整数

可以在“%”和字母之间插进数字表示最大场宽,不够3位右对齐:如果字符串的长度、或整型数位数超过说明的场宽,将按其实际长度输出。但对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。

%3d                           输出3个字符长度的整数
%9.2f                           输出场宽为9的浮点数,其中小数位为2,整数位为6,小数点占一位,不够9位右对齐。
%8s                           输出8个字符的字符串,不够8个字符右对齐。

页: [1]
查看完整版本: 如下面求解