問題:「無冗餘」輸入乙個字串
分析:「無冗餘」是指儲存的空間不能有冗餘的,比如,要存的陣列長度是10(加上『\0』是11),不可以定義陣列為char str[20],這樣還會有8個位元組(還是9個位元組?!)的空間沒被用,就算是冗餘,因此不能事先分配乙個足夠大的空間,也就不好用陣列實現,然後應該用指標實現(參考的部落格:
**如下:
#include
#include
int main()
p=(char*)realloc(p,sizeof(char)*i);
*(p+i-1)='\0'; //getchar()函式不會自己加上字串結束標誌,所以要自己加上'\0'
printf("%s\n",p);
free(p); //釋放空間
return 0;
}待解決:這個思路以及編寫的**是能夠做到無冗餘輸入字串的,截圖如下:
但是!!!如果輸入的字串很長,比如輸入了26個字母,結果就難以預料了······我想會不會是電腦被占用的記憶體太多,所以動態分配的時候沒成功?!於是修改**如下:
#include
#include
int main()
else
}if(p=(char*)realloc(p,sizeof(char)*i))
else
free(p);
}return 0;
}執行結果如下:
所以,應該是在動態分配的時候出了問題的吧···動態分配的(malloc等)變數是儲存在堆區,按理說free()不是應該能釋放記憶體嗎?!然後參考了這份部落格:好像懂了點,但是也還是沒懂到底是發生了什麼o(╥﹏╥)o,因為第一張截圖裡沒出現error,但是儲存的結果不完全是輸入的字串····問題沒有解決······(對菜鳥的我來說,儲存機制真的深奧)
無冗餘輸入字串 字串陣列 字串陣列
問題 輸入乙個數字n,接下來輸入n個字串,要求無冗餘地儲存字串 分析 參考到無冗餘地字串輸入 使用動態分配。本題還參考了這個鏈結的內容 1 include include int main char p int ns,i scanf d ns p char malloc sizeof char fo...
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...
字串和字串陣列
字串陣列 include int main int argc,const char ar printf name1 s n name1 name1 zhangsan 部分初始化中,沒有被初始化的元素預設是0,0 對應的ascii值是 0 char name2 9 printf name2 s n n...