从头开始学C语言第十三天——输入输出

字符输出函数putchar

格式:putchar(X);X可以是字符常量,变量或表达式。putchar只可以单独输出字符,不可以和printf一样多变量输出。

格式输出函数printf

格式:printf("X");X输出格式包括:%(修饰符)格式字符和原样输出'...'

常用格式字符类型:

%d 输出十进制数;%x 输出十六进制数;%o 输出八进制数;%c 输出单一字符;%s 输出字符串;%e 指数型浮点小数;%f 小数型浮点小数。

常用修饰符:

m 输出数据域宽,若数据长度

#include 

int main()
{
    unsigned char a = 74;
    char b= '8';

    putchar(a);
    putchar('\n');
    putchar(b);
    putchar('\n');

    printf("%c %d %c %d \n",a,a,b,b);

    return 0;
}
#include 

//printf输出
int main()
{
    int a=1234512;
    float b=123.456123;
    char c='A';
    static char A[]="hello world";

    printf("%d %010d %2d \n",a,a,a);//%010d=0001234512
    printf("%f %013f %8.1f %.2f \n",b,b,b,b);//%013f=000123.456123
    printf("%3c %d \n",c,c);
    printf("%s %10s %2.5s %.3s \n",A,A,A,A);
    putchar('\n');
    printf("%0+10d \n",a);//%0+10d=+001234512

    return 0;
}

字符输入getchar

格式:getchar();从键盘上输入单一字符;返回值正常则返回读取代码值,出错或结束返回-1。

#include 

int main()
{
    unsigned char a;
    a = getchar();

    printf("a=%c \n",a);

    return 0;
}

格式输入scanf

格式:scanf(“格式控制串”,地址表);按指定格式从键盘中读入数据,存入地址表指定单元存储;返回值正常则返回输入数据个数。地址表:变量的存储地址,常用的取址符号&

常用格式字符类型与printf类似:

%d 输出十进制数;%x 输出十六进制数;%o 输出八进制数;%c 输出单一字符;%s 输出字符串;%e 指数型浮点小数;%f 小数型浮点小数。

#include 

int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);

    printf("a=%d b=%d c=%d \n",a,b,c);

    return 0;
}

常用修饰符:

m 指定数据域宽,遇到空格或者不可转化字符结束;h 用于d,o,x前,指定输入为short型整数;l 用于d,o,x前,指定输入为long型整数;| 用于d,o,x前,指定输入为double型整数;* 抑制符,指定输入项读入后不赋值给变量。

#include 

int main()
{
    int a,b,c;
    scanf("%3d %2d %3d",&a,&b,&c);

    printf("a=%d b=%d c=%d \n",a,b,c);

    return 0;
}

例如输入的是13141321413,那么结果是:a=131,b=41,c=321

注意:用%c输入时,空格和转义字符也会当做有效输入

#include 

int main()
{
    int a,b,c;
    scanf("%c%c%c",&a,&b,&c);

    printf("a=%d b=%d c=%d \n",a,b,c);

    return 0;
}

 例如输入数据本来应该是1,2,3,但是因为字符输入,空格和转义字符也会当做有效值,因此结果会是:a=49,b=10,c=50。

因此为了避免出现把空格和转义字符当做输入进行程序,有两种方式:

1、在两个scanf函数之间加入一个getchar消除;

2、在格式串中用空格或者%*c消除。

#include 

int main()
{
    int a;
    char ch;
    
    scanf("%d",&a);
    getchar();
    scanf("%c",&ch);
    
    printf("a=%d ch=%c \n",a,ch);

    return 0;
}
#include 

int main()
{
    int a;
    char ch;
    
    scanf("%d",&a);
    scanf(" %c",&ch);
    
    printf("a=%d ch=%c \n",a,ch);

    return 0;
}

字符串输入输出

输入gets:格式:char* gets(char *s);功能:从键盘输入一组以回车结束的字符串放入字符数组,并自动加‘\0’,其中输入字符串的长度应小于数组维数,另外不同于scanf,gets函数不是以空格为字符串输入结束标志。

输出puts:格式:int puts(const char *s);功能:输出字符串,输出完换行,其中字符数组必须以‘\0’结尾。

#include 

int main()
{
    char a[5];
    char b[5];

    gets(a);
    gets(b);

    puts(a);
    puts(b);//puts输出完会自动换行

    printf("a=%s,b=%s",a,b);
    printf("a=%s,b=%s \n",a,b);//printf如果没有\n,就不会换行输出。

    return 0;
}

你可能感兴趣的:(c语言)