c無法根據字元指標輸出 裡面的內容

2021-12-22 19:54:58 字數 1363 閱讀 9301

1樓:匿名使用者

由於char newstring[100];的作用域在函式mid中,退出函式時被釋放,所以p指標指向地址就沒有了

修改後:

#include

#include

#include

#include

using namespace std;

char *mid(char oldstring,int start ,int num)

}return p;

}void main()

;printf("%s",mid(b,2,2));

getch();}

2樓:

//你這個就是常說的返回了一個區域性棧地址,newstring的空間在mid函式結束後就釋放了,那麼返回這個空間的首地址就沒意義了,把newstring定義為靜態的就沒這個問題了,或者用動態分配方法分配堆空間

#include

#include

#include

#include

using namespace std;

char *mid(char oldstring,int start ,int num)

}return p;

}void main()

;printf("%s",mid(b,2,2));

getch();}

3樓:校園古惑仔

無法輸出內容的原因上面都說了,其實最好的解決方式是將newstring定義在外面,然後用引數傳進來,這樣在mid內部不用再定義了,這樣的好處是比較通用,舉個例子如果我取的子串長度大於100,那麼你在mid裡面定義長度為100的newstring就有問題了。所以說最好將newstring的定義放到main函式中。當然這樣做的前提就是允許修改函式mid的原型,也就是新增一個引數。

參考如下:

char *mid(char oldstring,int start ,int num, char newstring)

}return p;

}int main()

;char newstring[100];

printf("%s\n",mid(b,2,5,newstring));

printf("%s\n",mid(b,3,2,newstring));

getch();}

4樓:

我幫你改了下,你參考下:

#include

#include

using namespace std;

char *mid(char oldstring,int start ,int num)

void main()

為什麼c 中無法用cout輸出字串

用cout輸出字串是可以的。大前提是當前名空間需要是std。即 中使用了 using namespace std 或者單獨宣告使用cout,即 中有 using std cout 否則需要使用 std cout進行輸出。在c 中有兩種字串的概念。1 string 類物件字串。需要使用std名空間,或...

c語言中變數指標輸出問題,C語言中變數指標輸出問題

這和printf用 s的規則相關。首先ps是一個指向字元型資料的指標 printf用 s修飾輸出時需要提供一個指標,這個指標指向的資料是字元型的,但printf將按照字串的規則來進行輸出,也就是輸出完這個指標指向的字元後,自動將指標加1,並判斷指向的字元是否為0,否則將輸出直至指向的資料為0為止,或...

c語言列印字串亂碼問題,C語言,字串輸出是亂碼

include void reverse char p,char q char myitoa int value,char const string,int radix else while value if sign reverse string,s 1 s 0 return string int...