作者tobashi ()
看板C_and_CPP
標題Re: [問題] 大家好 關於字串反轉
時間Tue Feb 19 21:10:05 2013
: String create_string( size_t max_length ) {
: String ret = (String)malloc(max_length+1);
: return ret[ 0 ] = '\0', ret;
: }
試了一下發現將string size設5
也就是String ret=(String)malloc(5)
居然也能成功??
: void release_string( String target ) {
: free( target );
: }
想請問 return ret[0]='\0' 這邊是將ret字串的開頭設為結尾??
: main() 經改寫變成這樣:
: int main()
: {
: String str = create_string( 5 );
: strcpy( str, "12345" );
如此一來的話
將12345 copy到 str中 str的分配是如何呢?
是 \0 1 2 3 4 5?
: reverse( str );
: puts( str );
: release_string( str );
: return 0;
: }
: 這裡是 reverse() 的程式碼:
: void reverse( String str )
: {
: size_t left = 0, right = strlen(str)-1;
: for ( ; left < right; ++left, --right ) {
: char temp = str[left];
: str[left] = str[right];
: str[right] = temp;
: }
: }
非常感謝願意花時間指導
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.217.113
→ pcyu16:成功的意思是? / 可以當作是簡單的初始化 / try it :) 02/19 23:19
→ tobashi:就是沒有error 我以為沒放'\0'應該會出問題的? 02/19 23:56
→ pcyu16:如果只是要沒有 error 的話 編譯看看就知道行不行了吧~ 02/20 00:16
→ tobashi:是阿 所以結果是可行 02/20 00:18
→ fjm31714:可以正常執行不代表程式邏輯是正確的 02/21 17:57