感动得要哭了啊啊啊 这个题从去年夏天纠结我到现在 这就是一个简单的水题啊啊啊 但是却考了一个很重要的概念
题目要求:输入字符串 以“拉链”一样的形式输出 即Z字形输出
思路:就是简单的找规律就可以 找到数组下标的规律 再将每行的所有字符输入到malloc的数组中 最终返回
大坑:起码我认为对我来说是个大坑了。。去年和今年的想法差不多 但总是runtime error 但是其实最后执行的样例是正确的 最后——是因为对C语言字符串char *的理解不够
C语言的字符串的实际长度会比字符数多1 即在字符串尾会有一个'\0' 用于标识字符串的结束 所以在新建字符串时 实际上malloc的大小是strlen长度还要加1 因为strlen仅返回字符数 而sizeof则返回包括'\0'的字符串在内存中的实际长度 所以在设置长度为len+1后 还需要手动在索引为len的位置设置值为'\0'
eg. strlen("abc")->3 sizeof("abc")->4
char *s="abc"
strlen(s)-->3 返回s指向的字符串的长度
sizeof(s)-->4 返回指针占多少字节
sizeof(*s)-->1 返回指针指向的元素占多少字节 char类型是1字节