一些字符串与指针的小问题
分类:
文章
•
2024-09-14 15:22:40
- scanf的后面如果要加gets,就得先输入 fflush(stdin);清理一下缓存区,因为前面的scanf 会保存回车符号。这会直接跳过gets语句。或者可以用scanf("%d%*c”,)来跳过
- 字符串与数组的区别很大的。数组的最后一位就不会有'\0'
- 先就这样到时候在补充。
- 字符串用*来定义是无法打印其单个的值,也无法来处理单个值的赋值。把字符串放在了一个只能读不能写的地方。如果两个字符串都用*定义的且其值都一样。那么两个字符串只向同一个地方。
- 如果要修改那么要用数组。
- 数组表示字符串就在我这里。指针表示指向一个字符串。
- 字符串的输入用scanf(%s)是不安全的他也不知道字符串的长度。你定义了数组,编译器为这个数组在栈里开辟了3个字节的内存空间,但是这3个空间之后的一些空间是没有被占用的,所以你就成功得输入了6个数到这个数组中……但是如果之后的空间被占用了,就会导致严重的问题,会提示该内存不可写,比如你可以试着输入100个数。。这种错误在写程序时犯下是比较严重的,所以程序员一般在输入时会检测筛选你输入的内容,或者是开辟一个够大的数组
- 如果想用scanf最好加上 scanf("%7s",str);那个7可以保护程序不会多输入。最多读7个字符。
- 当出现string1 == string2时它们判断的是这两个数组的首地址是否相等。
- \0代表的是ASSIK码表中的0;
- strcmp的原理 s1 - s2

- 的
- 对常见字符串问题的处理。char*string只是定义了一个指针,还不能代表字符串。而且指针没有初始化可能会指向一些奇怪的地方。使程序崩溃。
- 字符串返回的是首地址。可以用这样的一个定义 char*string;string ="123"//却用不了*string = "123".
-


