Re: [問題] 大家好 關於字串反轉

看板C_and_CPP作者時間11年前 (2013/02/19 21:10), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串3/4 (看更多)
: 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

02/19 23:19, , 1F
成功的意思是? / 可以當作是簡單的初始化 / try it :)
02/19 23:19, 1F

02/19 23:56, , 2F
就是沒有error 我以為沒放'\0'應該會出問題的?
02/19 23:56, 2F

02/20 00:16, , 3F
如果只是要沒有 error 的話 編譯看看就知道行不行了吧~
02/20 00:16, 3F

02/20 00:18, , 4F
是阿 所以結果是可行
02/20 00:18, 4F

02/21 17:57, , 5F
可以正常執行不代表程式邏輯是正確的
02/21 17:57, 5F
文章代碼(AID): #1H8tclBZ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1H8tclBZ (C_and_CPP)