第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么這個(gè)字符串反轉(zhuǎn)C代碼會(huì)導(dǎo)致分段錯(cuò)誤?

為什么這個(gè)字符串反轉(zhuǎn)C代碼會(huì)導(dǎo)致分段錯(cuò)誤?

C++ C
慕萊塢森 2019-06-06 16:04:30
為什么這個(gè)字符串反轉(zhuǎn)C代碼會(huì)導(dǎo)致分段錯(cuò)誤?我試圖編寫代碼來反轉(zhuǎn)字符串(我只是想更好地進(jìn)行C編程和指針操作),但我不知道為什么我會(huì)得到一個(gè)分段故障:#include <string.h>void reverse(char *s);int main() {     char* s = "teststring";     reverse(s);     return 0;}void reverse(char *s) {     int i, j;     char temp;     for (i=0,j = (strlen(s)-1); i < j; i++, j--) {         temp = *(s+i);     //line 1         *(s+i) = *(s+j);   //line 2         *(s+j) = temp;     //line 3     }}導(dǎo)致分段錯(cuò)誤的是第2行和第3行。我知道也許有更好的方法來做這件事,但我想找出具體的在我的代碼中導(dǎo)致分割錯(cuò)誤。更新*我已按要求提供了調(diào)用功能。
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的代碼可能因?yàn)橐韵聨讉€(gè)原因而出現(xiàn)分段錯(cuò)誤。以下是腦海中浮現(xiàn)的那些

  1. s為空。
  2. s指向保存在只讀內(nèi)存中的const字符串。
  3. s不為空終止。

我認(rèn)為#2是最有可能的。你能告訴我們反向呼叫的地址嗎?

編輯

基于你的樣本#2絕對是答案。C/C+中的字符串文本不可修改。正確的類型實(shí)際上是const char*而不是char*..您需要做的是將一個(gè)可修改的字符串傳遞到該緩沖區(qū)。

快速示例:

char* pStr = strdup("foobar");reverse(pStr);free(pStr);


查看完整回答
反對 回復(fù) 2019-06-06
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

你在測試像這樣的東西嗎?

int main() {
    char * str = "foobar";
    reverse(str);
    printf("%s\n", str);}

這使得str成為字符串文本,您可能無法編輯它(對我來說是分段錯(cuò)誤)。如果你定義char * str = strdup(foobar)它應(yīng)該很好(對我來說)。


查看完整回答
反對 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 617 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號