1. 程式人生 > >C常用輸入輸出總結

C常用輸入輸出總結

一、輸入輸出格式

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);