字符串输入问题
#include <stdio.h>int main()
{
char str1;
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为空,这个是什么情况? 我把scanf(“%d”,str1);改成int a = scanf(“%d”,str1);正常显示没有问题
后面代码a==0表示scanf获取失败 luckyblyd 发表于 2018-12-3 19:36
我把scanf(“%d”,str1);改成int a = scanf(“%d”,str1);正常显示没有问题
后面代码a==0表示scanf获取失 ...
#include <stdio.h>
int main()
{
char str1;
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的值了 str2整数不应该用char,把char改为int就行了 cha r是占用一个字节,in t需要4个字节 错误的是str2,为什么受影响的是str1的输出?! str1是一个数组
你写的是scanf("%s",str1);
第一:少了个取地址符号
第二:
数组为30个,想要scanf
应该写成
for(int number = 0; number < 30 ; numbet++)
{
scanf("%s" , &str1);
}
你那样写只scanf一次
而printf也需要for,才能打印出30个,你那种写法只打印出一个
for(int number = 0; number < 30 ; numbet++)
{
printf("%s" , str1);
} 如果你要字符型就用%s
或者干脆都用int str2; csilovelxl 发表于 2018-12-6 16:49
错误的是str2,为什么受影响的是str1的输出?!
是因为在执行 scanf("%d", &str2);这条语句的时候,程序当掉了,也就是停止运行了,后面的语句也就不会在执行了。
页:
[1]