返回首页   进站必读

3.3 scanf


3.3 scanf

3.3.1 从键盘输入一个整数

    #include <stdio.h>

    void main()
    {
            int i;
            scanf("%d", &i);
            printf("%d\n", i);

            return 0;
    }

3.3.2 以空格为分格输入多个整数

    #include <stdio.h>

    void main()
    {
            int i, j, k;
            scanf("%d %d %d", &i, &j, &k);
            printf("i = %d, j = %d, k = %d\n", i, j, k);

            return 0;
    }

3.3.3 输入一个字符串

    #include <stdio.h>

    void main()
    {
            char str[100];
            scanf("%s", str);
            printf("%s", str);

            return 0;
    }

编译运行:

$gcc string.c -o string
./string
helloeveryone!
helloeveryone!
./string
hello everyone!
hello
从上面的测试来看,scanf函数不能接收空格,只能接收第一人空格前面的字符串。
换一个函数gets:

    #include <stdio.h>

    void main()
    {
            char str[100];
            gets(str);
            printf("%s", str);

            return 0;
    }

编译一下:

$gcc string.c -o string
/tmp/ccJxLa46.o: In function `main': 
test.c:(.text+0x2a): warning: the `gets' function is dangerous and should not be used.
输出gets函数不建议使用,因为gets函数不进行边界检查,容易发生越界发生错误。所以我们应该用fgets函数。

    #include <stdio.h>

    void main()
    {
            char str[100];
            fgets(str, 100, stdin);
            printf("%s", str);

            return 0;
    }

这样就没有问题了。