复习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;
}