C语言基础之字符串输入输出 | 您所在的位置:网站首页 › c语言输入输出一个字符串 › C语言基础之字符串输入输出 |
字符串赋值 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 实验室设备网 版权所有 |