鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 122Ml

[已解决]字符串结果输出异常

[复制链接]
发表于 2020-8-4 16:01:03 | 显示全部楼层
#include <stdio.h>


int main()
{
        int i=0;
        char name[50];

        printf("请输入合法的数字:\n");
        while(scanf("%d", &name[i])==1 && i<49 && name[i]>=1 && name[i]<=9)
        {
                printf("请输入合法的数字:\n");
                i++;
        }
        name[i] = '\0';

        //打印数组
        puts("结果是:");
        i=0;
        while (name[i] != '\0')
                printf("%d ", name[i++]);
        puts("");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 16:19:09 | 显示全部楼层
本帖最后由 baige 于 2020-8-4 16:25 编辑



首先字符数组存放的是字符,scanf()里用%c来输入的字符,并且每一个都是字符,而不是写成数字, 当判断是也不是 >=0 <=9 而 是>='0' <='9'
其次,你上面说不能用%s输出,但这是个字符数组,数组里存放的是数字字符'0'-'9' 不是数字0-9,是一个个的字符组成成的字符串,当然可以用%s输出
例如 char str[50] = "12345";
当然可以用%s全部输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-4 19:01:16 | 显示全部楼层
本帖最后由 ggsdddup 于 2020-8-4 19:11 编辑

字符数组是可以放数字的,只要数字的范围不太大

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 19:12:33 | 显示全部楼层
本帖最后由 baige 于 2020-8-4 19:20 编辑
ggsdddup 发表于 2020-8-4 19:01
1、字符数组是可以放数字的,只要数字的范围不太大,还有判断的时候加不加单引号我感觉没什么用,(可能是 ...


你去看一下输出
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char str[11] = "0123456789";
  5.         for(int i = 0; i < 10; ++i)
  6.                 printf("%d : %d\n",i,str[i]);
  7.         return 0;
  8. }
复制代码

对于字符的取值范围0-255,每一个有都对应的一个字符,数字存进去,只是把数字当成一个个字符,
感觉你很想一个初学者
https://fishc.com.cn/forum.php?m ... amp;highlight=ascii
你也可以试着运行你的程序看会输出什么,无论你输入什么,你的输出都只会是:  ( 结果是:)()里面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-4 19:20:56 | 显示全部楼层
baige 发表于 2020-8-4 19:12
你去看一下输出

对于字符的取值范围0-255,每一个有都对应的一个字符,数字存进去,只是把数字当成一个 ...


牛皮
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 19:21:45 | 显示全部楼层
本帖最后由 baige 于 2020-8-4 19:23 编辑


推荐你去看一下字符数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 19:29:33 | 显示全部楼层
本帖最后由 ggsdddup 于 2020-8-4 19:31 编辑

        char name[10]={10,20,5,3};
        printf("%d\n", name[1]);
那这个数组里边的不是字符啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-5 10:40:43 | 显示全部楼层
ggsdddup 发表于 2020-8-4 19:29
char name[10]={10,20,5,3};
        printf("%d\n", name[1]);
那这个数组里边的不是字符啊

emmmm,有点听不懂,但还是随便说下我的见解:
输入10,20,5,3都不是字符,转化为ASCII值,没有加,输出时转化为对应数字字符,自然是数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 13:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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