C常用输入输出总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21926717/article/details/79058798

一、输入输出格式

1)整型

scanf("%d",&m);   //int
scanf("%ld",&m);  //long int
scanf("%lld",&m); //long long int

2)浮点型

1、基本格式

scanf("%f",&m);   //float
scanf("%lf",&m);  //double

2、加域宽

#include<stdio.h>
int main(){
    
    double m;
    while(scanf("%lf",&m)!=EOF){
        printf("%.2lf\n",m);  //保留两位小数,整数部分不限制 
        printf("%5.2lf",m);  //保留两位小数,两位整数。若整数小于两位则右对齐(若%后面加‘-’,则左对齐);若整数部分大于2位则该限制失效(小数点算一位)
    }
    return 0; 
}

3)字符和字符串(c语言里面没有string类型

//关于字符数组是否要加&,可参见https://zhidao.baidu.com/question/523623586.html

1、输入输出格式

#include<stdio.h>
int main() {  
    char ch1[10];            //作为字符串,但不能带空格
    char ch2;                //单个字符
    scanf("%s %c",ch1,&ch2); 
    printf("%s %c",ch1,ch2);
    return 0;  
}

2、字符数组赋初值方式

#include <stdio.h>
#include <string.h>

int main(){
	//前两种定义时赋初值 
	char m0[10]="abcdefg";       
	char m1[10]={'a','b','c','d','e','f','g'};
	//第三种先定义后,若要直接一次性赋初值就用strcpy(数组名,字符串),当然对下标用循环一一赋初值也行。 
	char m2[10];
	strcpy(m2,"fdafafads");
	printf("%s\n%s\n%s\n",m0,m1,m2);
	return 0;
}

3、带空格的字符串输入方式

  1. char data[100];
    gets(data);
  2. char data[100];
    scanf("%[^\n]", &data);      //使用正则表达式,读到换行符结束
    

    注:c++输入方式

    对于字符数组:

       cin.getline(str, len)        cin.get(str, len)

       两者都是读取一行输入,直至换行符。

       getline()将换行符丢弃,而get()将换行符保留在输入序列里        

    对于string类:

        getline(cin, str)

4、多个字符输入

如:若要输入以下数据并对每组数据进行相应处理,则要注意,详见注释。

4
C J
J B
C B
B B
scanf("%d",&m);
getchar();      //必须要吃掉回车,会被读取,因为这也是一个字符
for(i=0; i<m; i++){
    scanf("%c %c",&a,&b);      //中间必须加上空格,因为给出的数据中间有空格
    getchar();               //同样道理,要吃掉回车
    //do something.......
}

5、使用正则表达式限制输入

char a[100];
scanf("%[0-9]",a);    //输入字符串,但每个字符都只能为数字,当然也可限制字母即:%[a-z]
puts(a);

猜你喜欢

转载自blog.csdn.net/qq_21926717/article/details/79058798