C语言 输入输出相关总结

复习C语言,将以前对输入输出的总结笔记转到网上,以便以后查阅。其中一些例子是取自印度大佬编写的名为C语言教程,解决了许多疑惑。不得不说印度编写的教程真的棒。

getchar()可以接受键入的任何值,包括制表符和回车键

int main(int argc, char *argv[])
{
 // getchar()可以接受键入的任何值,包括制表符和回车键 
 printf("input a word,\n");
 printf("word:%c\n",getchar()); 
 printf("输入完成\n");
 return 0;
}
int main(int argc, char *argv[])
{
 char c1,c2;
 int a1,a2;
 c1=getchar();
 scanf("%2d",&a1);
 c2=getchar();
 scanf("%3d",&a2);
 printf("%d,%d,%c,%c\n",a1,a2,c1,c2); 
 return 0;
}

scanf()中的 %2d表示仅能显示两位,余下的将显示在num2中,故num2中的数显示在num3中,以此类推

int main(int argc, char *argv[])
{
 int num1,num2,num3,num4;
 printf("num1 num2:\t");
 scanf("%2d%5d",&num1,&num2); 
 //scanf()中的 %2d表示仅能显示两位,余下的将显示在num2中,故num2中的数显示在num3中,以此类推 
 printf("%2d,%5d\n",num1,num2);
 printf("num3 num4:\t");
 scanf("%d%d",&num3,&num4); 
 printf("%2d,%5d\n",num3,num4);
 return 0;
}
//测试结果 scanf("%2d%5d",&num1,&num2)
//num1 num2:      1200 34567899
//12,    0
//num3 num4:      5555 88888888
//34567899, 5555
//请按任意键继续. . .
int main(int argc, char *argv[])
{
 int a,b,c;
 double e,f,g;
 printf("intput three number(int)\n");
 scanf("%d %d %d",&a,&b,&c);
 printf("%d %d %d",a,b,c);
 printf("\n");   //分割线
 printf("---------------------------------");
 printf("\n");
 printf("intput three number(double)\n");
 scanf("%lf %lf %lf",&e,&f,&g);
 printf("%lf ,%e ,%lf",e,f,g);
 //注意double型是%lf,
 //float型是%f,不可以弄混,
 //否则会出现无效数字 
 return 0;

注意double型是%lf,
float型是%f,不可以弄混,
否则会出现无效数字
试验发现,如果上一个scanf()如果多输入一个数,则会将这个多余的数挤到下一个scanf()输入来

int main(int argc, char *argv[])
{
 int a,b,c;
 double e,f,g;
 printf("intput three number(int)\n");
 scanf("%d %d %d",&a,&b,&c);
 printf("%d %d %d",a,b,c);
 printf("intput three number(double)\n");
 scanf("%lf %lf %lf",&e,&f,&g);
 printf("%lf ,%e ,%lf",e,f,g);
 //注意double型是%lf,
 //float型是%f,不可以弄混,
 //否则会出现无效数字 
 return 0;
}
//试验发现,如果上一个scanf()如果多输入一个数,则会将这个多余的数挤到下一个scanf()输入来 
//intput three number(int)
//123 1231 2334 21
//123 1231 2334
//---------------------------------
//intput three number(double)
//123241 34423 4534
//21.000000 ,1.232410e+005 ,34423.000000请按任意键继续. . .
int main(int argc, char *argv[])
{
 int no;
 char name1[15],name2[15],name3[15];
 printf("1. name1[15]:\n");
 scanf("%d %15c",&no,name1);
 //%c 只有数组已满时才读取结束,, 
 printf("%d %15s\n\n",no,name1); 
 printf("2. name2[15]:\n");
 scanf("%d %15s",&no,name2); 
 //%s一旦遇到空格,读取工作就停止 
 printf("%d %15s\n\n",no,name2); 
 printf("3. name3[15]:\n");
 scanf("%d %15s",&no,name3);
 printf("%d %15s\n\n",no,name3); 
 return 0;
}
//测试结果一:
//1. name1[15]:
//1 123456789012345
//1 123456789012345
//
//2. name2[15]:
//2 New Work
//2             New
//
//3. name3[15]:
//2             ?@
//
//请按任意键继续. . .
 
//测试结果二:
//1. name1[15]:
//1 123456789012345
//1 123456789012345v璴9v?@
//
//2. name2[15]:
//2 New_Work
//2        New_Work
//
//3. name3[15]:
//3 London
//3          London
//
//请按任意键继续. . .
int main(int argc, char *argv[])
{
 char address[80],number[80];
 printf("Enter address\n");
 //scanf("%s",address);
 scanf("%[a-z,0-9]",address);
 //%[ ]表示在输入的字符串中只能包含的字符。如果遇到其他字符串,则会立即停止读取 
 printf("%-80s\n\n",address); 
 printf("Enter name\n");
 scanf("%[^ ]",number);  //“遇到空格会停止” 
 //%[ ]表示在输入的字符串中如果遇到该字符,则会立即停止读取 
 printf("%-80s\n\n",number); 
 return 0;
}

scanf("%d%d %c%lf%s",&count1,&count2,&code,&ratio,name);
在%c之前要加一个空格,从而在输入数字之后的空格不会当作字符读取到%c中

int main(int argc, char *argv[])
{
 int count1,count2;
 char code;
 double ratio;
 char name[5];
 scanf("%d%d %c%lf%s",&count1,&count2,&code,&ratio,name);
 printf("%d-%c-%lf-%s\n",count2,code,ratio,name); 
 //在%c之前要加一个空格,从而在输入数字之后的空格不会当作字符读取到%c中 
 printf("%d",strlen(name));
 return 0;
}

scanf()遇见空格,输入就终止,而get()函数是遇到回车后终止

int main(int argc, char *argv[])
{
 char *p;
 int *i;
 scanf("%s",p);   //scanf()遇见空格,输入就终止,而get()函数是遇到回车后终止 
 printf("%s\n",p);
 printf("%c\n",*(p+3));
// i=&5;
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值