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...