感動得要哭了啊啊啊 這個題從去年夏天糾結(jié)我到現(xiàn)在 這就是一個簡單的水題啊啊啊 但是卻考了一個很重要的概念
題目要求:輸入字符串 以“拉鏈”一樣的形式輸出 即Z字形輸出
思路:就是簡單的找規(guī)律就可以 找到數(shù)組下標(biāo)的規(guī)律 再將每行的所有字符輸入到malloc的數(shù)組中 最終返回
大坑:起碼我認(rèn)為對我來說是個大坑了迟蜜。。去年和今年的想法差不多 但總是runtime error 但是其實最后執(zhí)行的樣例是正確的 最后——是因為對C語言字符串char *的理解不夠
C語言的字符串的實際長度會比字符數(shù)多1 即在字符串尾會有一個'\0' 用于標(biāo)識字符串的結(jié)束 所以在新建字符串時 實際上malloc的大小是strlen長度還要加1 因為strlen僅返回字符數(shù) 而sizeof則返回包括'\0'的字符串在內(nèi)存中的實際長度 所以在設(shè)置長度為len+1后 還需要手動在索引為len的位置設(shè)置值為'\0'
eg. strlen("abc")->3? sizeof("abc")->4
char *s="abc"
strlen(s)-->3 返回s指向的字符串的長度
sizeof(s)-->4 返回指針占多少字節(jié)
sizeof(*s)-->1 返回指針指向的元素占多少字節(jié) char類型是1字節(jié)