scanf()函数的两种常见用法

1.以字符的形式一个一个的字符读取

如下:

#include<stdlib.h>
#include<stdio.h>

int main(int argc, char const *argv[])
{
    
    
    char a[100];
    int i = 3,m=0; /*i为读取的字符个数,m是将读取到的字符存储在字符串数组中相应的位置
                     */
    while (i--)
    {
    
    
        printf("请输入字符串");
        scanf("%c", &a[m]); //这边scanf是以以字符的形式读取
        m++;
    }
    printf("%s", a);

    return 0;
}

这种读取的好处是,不会因为空格、换行等导致读取中断,输入是多少是什么形式,最终显示的就是什么形式;会将空格和换行符也按照Ascall存储进字符数组;如下图:
在这里插入图片描述
第一个输入w r中级有一个空格,最后也打印的也是相同的;
第二个输入w和r但是换行了,最后也是打印的换行的;
上述两个说明这种形式将空格和换行都存储进去了;

**

下面这种形式也是经常需要使用的读取输入的形式:

**
在windows下是按Ctrl+z键输入EOF,在Linux中是按下Ctrl+d键输入EOF。

while(scanf("%c",&power[i][j])==EOF)

2.以字符串的形式读取

如下:

#include<stdlib.h>
#include<stdio.h>

int main(int argc, char const *argv[])
{
    
    
    char a[100];
    int i = 2,m=0;
    while (i--)
    {
    
    
        printf("请输入字符串");
        scanf("%s", a);  //以字符串的形式读取
        m++;
    }
    printf("%s", a);

    return 0;
}

输出结果如下:
在这里插入图片描述
这种形式scanf并不会读取空格和换行等转义字符,它会在空格和换行这些转义字符这里停止读取,相等于它的读取截止;

猜你喜欢

转载自blog.csdn.net/weixin_42224577/article/details/108797952