字符串赋值?
- char *t = "title";
- char *s;
- s = t;
- 并没有产生新的字符串,只是让指针s指向了t所指的字符串,对s的任何操作就是对t做的
- char string[8];
-
-
-
- scanf("%s",string);
- printf("%s",string);
- scanf读到一个单词(到空格/tab /或回车为止)
- scanf是不安全的,因为不知道要读入的内容的长度
- 下述代码翁凯老师在演示时,输入12345678 12345678
- 结果为##12345678##,并且报错 About trap:6,而本人在自己的电脑上操作时 超出字符长度的都输出了,疑问?
-
-
-
#include<stdio.h>
int main(void){
char word[8];
char word2[8];
scanf("%s",word);
scanf("%s",word2);
printf("%s##%s##\n",word,word2);
return 0;
}
安全的输入
- char string[8];
- scanf("%7s",string);
- 在%和s之间的数字表示最多允许读入的字符的数量,这个数字应该比数组的大小小一
- 下一次scanf从哪里开始?
- char *string;
- scanf("%s",string);
- 以为char*是字符串类型,定义了一个字符串类型的变量string就可以直接使用了
- 由于没有对初始化为0,所以不一定每次运行都出错
- string是一个本地变量,是一个指针,没有初始化的话,它本身可能指向一个非法的区域,导致出错
- 空字符串
- char buffer[100]="";
- 这是一个空的字符串,buffer[0]=='\0'
- char buffer[] = "";
- 这个数组的长度只有1!
- 这是一个空的字符串,buffer[0]=='\0'
- 这个数组的长度只有1!