鱼C论坛

 找回密码
 立即注册
查看: 2105|回复: 2

[已解决]%s 和%c的具体区别在什么地方

[复制链接]
发表于 2017-4-8 12:30:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdlib.h>
#include<stdio.h>
int main()
{
        char i;
        float j, k, q, z;
        printf("请输入姓名:");
        scanf_s("%c", &i);
        printf("请输入身高(CM):");
        scanf_s("%f", &j);
        printf("请输入体重(KG):");
        scanf_s("%f", &k);
        printf("==========正在转换=========\n");
        q = j*0.39;
        z = k*2.20;
        printf("%c的身高是%.2f(in),体重是%.2f(lb)", i, q, z);
        system("pause");
        return 0;
}
这里的%c为什么不能用%s 代替? 不是说%c是字符%是字符串吗?
最佳答案
2017-4-8 15:30:48
c%是字符类型的格式,只能用于格式化一个字符变量,s%是字符串的格式,可用于格式化多个字符连起来,即字符串。多个字符组成就是字符串,C语言中字符串定义可以是char a[10];或者是char* a;又或者你包括了<string.h>这个头文件就可以string a;这样子的都可以用s%进行格式化,单个字符也可以使用s%格式化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-8 13:09:09 | 显示全部楼层
因为你定义的变量 i 是一个 char 型变量,在这里占用1个字节。如果想写为%s的话,必须给i变量分配一定的内存空间才可以。
#include<stdlib.h>
#include<stdio.h>
int main()
{
    char i[20]; //定义字符数组内存空间大小
    float j, k, q, z;
    printf("请输入姓名:");
    scanf_s("%s", i, 20);  //scanf_s必须多加一个参数,这里20限定字符的长度包含'\0'
    printf("请输入身高(CM):");
    scanf_s("%f", &j);
    printf("请输入体重(KG):");
    scanf_s("%f", &k);
    printf("==========正在转换=========\n");
    q = j*0.39;
    z = k*2.20;
    printf("%s的身高是%.2f(in),体重是%.2f(lb)", i, q, z);  //注意%s
    system("pause");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 15:30:48 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
c%是字符类型的格式,只能用于格式化一个字符变量,s%是字符串的格式,可用于格式化多个字符连起来,即字符串。多个字符组成就是字符串,C语言中字符串定义可以是char a[10];或者是char* a;又或者你包括了<string.h>这个头文件就可以string a;这样子的都可以用s%进行格式化,单个字符也可以使用s%格式化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表