C语言基础之字符串输入输出 您所在的位置:网站首页 c语言输入输出一个字符串 C语言基础之字符串输入输出

C语言基础之字符串输入输出

#C语言基础之字符串输入输出| 来源: 网络整理| 查看: 265

    字符串赋值

char* t = "title"; char* s; s = t;

    ▲ 以上代码并没有产生新的字符串,只是让指针s指向了t所指的字符串,对s的任何操作就是对t做的

    字符串输入输出

char string[8]; scanf("%s", string); printf("%s\n", string);

    ▲ scanf() 读入一个单词(到空格、tab或回车为止)

【例】

#define _CRT_SECURE_NO_WARNINGS #include int main() { char string[8]; scanf("%s", string); printf("%s##\n", string); return 0; }

    当我们在Shell中输入“Hello World!”时,程序输出的结果如下图所示:

这就说明,scanf()只读到空格位置就停止了读入,我们再试一下下面的程序:

#define _CRT_SECURE_NO_WARNINGS #include int main() { char string[8]; char word[8]; scanf("%s", string); scanf("%s", word); printf("%s##%s##\n", string, word); return 0; }

再次尝试向Shell中输入“Hello World!”,可以得到以下图所示的结果:

这就说明在输出时,并没有将我们输入空格进行输出打印,换而言之——这个空格只是用于区分这个字符串和那个字符串的

    ▲ scanf() 是不安全的,因为不知道要读入的内容的长度

#define _CRT_SECURE_NO_WARNINGS #include void f(void) { char string[8]; char word[8]; scanf("%s", string); scanf("%s", word); printf("%s##%s##\n", string, word); } int main() { f(); return 0; }

这个程序运行时,我们试图向scanf() 输入越界的内容“12345678 12345678”,那么程序就会崩溃:

所以说,安全的方式,是在scanf() 函数内的"%s"中,在'%'和's'之间写入一个数字,例如"%7s",这样scanf() 就知道最多只能读取7个字符,超过之后的部分即舍弃,当然这样写读入的字符也可以小于7个是没有问题的。

    安全的输入

char string[8]; scanf("%7s", string);

    ▲ 在'%'和's'之间的数字表示最多允许读入的字符的数量,这个数字应该比数组的大小-1

        ◆ 下一次scanf从哪里开始?

    常见错误

char* string; scanf("%s", string);

    ▲ 以为char* 是字符串类型,定义了一个字符串类型的变量string就可以直接使用了

        ◆ 由于没有对string初始化为0,所以不一定每次运行都出错

    空字符串

char buffer[100] = "";

    ▲ 这是一个空的字符串,buffer[0] == '\0'

char buffer[] = "";

    ▲ 这个数组的长度只有1!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有