C语言 scanf函数应用
发布网友
发布时间:2022-05-17 07:37
我来回答
共4个回答
热心网友
时间:2023-08-22 14:24
scanf()函数调用的一般形式:
格式指示符的一般形式为
%[*][宽度]类型字符;其中赋值抑制符*和款读书是可缺省的;
拿你的例子举例,输入1和2
scanf("%d%d",&a,&b);//这是最常用的方法,不容易出错,输入时输入“1“”“分隔符”“2”回车即可
scanf("%d,%d",&a,&b);//输入“1”“,”"2"回车即可,但是不小心就会输入错误
scanf("%d %d",&a,&b);//输入"1“” “2”,回车即可
你的第一种方法错误的原因是:末尾的%d后多了一个空格,编译器认为还有要输入的数,所以你再输入一个数后,输入才会停止,去掉那个空格后就不会出问题了,另外建议用我写的第一种方法,不容易出错。
这样可以么?追问我想要在一次性输入了整个IP地址如11.22.33.44后 再回车 能接收到a=11;b=22;c=33;d=44;
热心网友
时间:2023-08-22 14:24
int a,b,c,d ;
scanf( “%d.%d.%d.%d", &a,&b,&c,&d );
输入11.22.33.44后 再回车 能接收到a=11;b=22;c=33;d=44;
#include <stdio.h>
int main()
{
int a,b,c,d ;
scanf("%d.%d.%d.%d", &a,&b,&c,&d );
printf( "a=%d\n",a );
printf( "b=%d\n",b );
printf( "c=%d\n",c );
printf( "d=%d\n",d );
return 0;
}亲测,可得
热心网友
时间:2023-08-22 14:24
有点麻烦,用个union吧
union {
unsigned char a[4];
long b;
};
scanf("%hhu.%hhu.%hhu.%hhu",&a[0],&a[1],&a[2],&a[3]);
然后可以直接用 b ,无需经过任何转换
追问这个好像在不同编译器下结果不同 能不能来个通用的
热心网友
时间:2023-08-22 14:25
#include<stdio.h>
int main()
{
unsigned int a;
int c1,c2,c3,c4;
scanf("%d.%d.%d.%d", &c1, &c2, &c3, &c4);
a = c1<<24 | c2<<16 | c3<<8 | c4;
printf("%d.%d.%d.%d a=%u\n", c1, c2, c3, c4, a);
return 0;
}