鱼C论坛

 找回密码
 立即注册
查看: 2225|回复: 8

字符串输入问题

[复制链接]
发表于 2018-12-3 14:26:10 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        char str1[30];
        unsigned char str2;

        printf("Input str1:");
        scanf("%s",str1);

        printf("Input str2:");
        scanf("%d", &str2);

        printf("str1 = %s, str2 = %d\n",str1, str2);

        return 0;
}

str1输入一个字符串,str2输入一个整数,最后的输出结果只有输入的str2,输入的str1为空,这个是什么情况?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-3 19:36:31 | 显示全部楼层
我把scanf(“%d”,str1);改成int a = scanf(“%d”,str1);正常显示没有问题
后面代码a==0表示scanf获取失败
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-4 09:23:23 | 显示全部楼层
luckyblyd 发表于 2018-12-3 19:36
我把scanf(“%d”,str1);改成int a = scanf(“%d”,str1);正常显示没有问题
后面代码a==0表示scanf获取失 ...
#include <stdio.h>

int main()
{
        char str1[30];
        unsigned char str2;

        printf("Input str1:");
        scanf("%s",str1);

        printf("str1 = %s\n",str1);

        printf("Input str2:");
        scanf("%d", &str2);

        printf("str1 = %s, str2 = %d\n",str1, str2);

        return 0;
}
输入字符串str1后,立即输出是可以输出输入的str1的,输入str2后,再次输出,就没有str1的值了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-5 15:11:58 | 显示全部楼层
str2整数不应该用char,把char改为int就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-6 15:01:46 | 显示全部楼层
cha&#8198;r是占用一个字节,in&#8198;t需要4个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-6 16:49:39 | 显示全部楼层
错误的是str2,为什么受影响的是str1的输出?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 20:12:22 From FishC Mobile | 显示全部楼层
str1[30]是一个数组
你写的是scanf("%s",str1);

第一:少了个取地址符号
第二:
数组为30个,想要scanf
应该写成

for(int number = 0; number < 30 ; numbet++)
{
    scanf("%s" , &str1[number]);
}

你那样写只scanf一次

而printf也需要for,才能打印出30个,你那种写法只打印出一个

for(int number = 0; number < 30 ; numbet++)
{
    printf("%s" , str1[number]);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 20:16:12 From FishC Mobile | 显示全部楼层
如果你要字符型就用%s
或者干脆都用int str2;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 20:28:23 | 显示全部楼层
csilovelxl 发表于 2018-12-6 16:49
错误的是str2,为什么受影响的是str1的输出?!

是因为在执行 scanf("%d", &str2);  这条语句的时候,程序当掉了,也就是停止运行了,后面的语句也就不会在执行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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