c語言高手,指標,strcpy用不成

2022-11-08 22:25:24 字數 3655 閱讀 5852

1樓:

這是傳說中的。。。野生指標。。。

指標 ptrsource 和 ptrdestionaton 都沒有初始化,

也就是說你的程式在執行的時候沒有分配一段空間,然後讓這些指標取指向它們;

而是讓這些指標指向了記憶體中的隨機區域。

換句話說,你在非法操作記憶體。這樣的後果,是修改了其他應用程式使用的內容,更嚴重的是修改了作業系統本身使用的記憶體(當然一般情況下會禁止你訪問的那片記憶體區域的)。

上面的野指標是最嚴重的問題,你的程式還有其他問題,下面是修改後的版本:

#include

int main()

2樓:珂學原理

char *ptrsource ;

這裡字串陣列指標一定要初始化!

否則這個指標是在亂指,編譯器一般不會被允許的。

不能直接給一個不定的指標輸入字串!這是不允許的危險做法。

改成char ptrsource[50];

3樓:

錯在char *ptrsource,*ptrdestionaton只是個指標 沒有指向任何物件,沒有任何資源。

付個值ptrsource=new char[100];ptrdestionaton=new char[100];再試試

4樓:匿名使用者

ptrsource和ptrdestionaton未開闢記憶體 顯然出錯~

c語言strcpy_s為什麼不能用指標作為第一引數

5樓:匿名使用者

strcpy_s()還需要傳入一個整數,說明目標陣列的大小,此舉是為了確保不會產生緩衝區溢位。

6樓:匿名使用者

使用strcpy()即可

c語言:用指標實現庫函式strcpy

7樓:匿名使用者

void strcpy(const char *str2 , char *str1 )

printf("%s\n",bak_p); //輸出字串用%s}

8樓:

剛剛搬完磚,來看看你這道題。一看之下,一堆吐槽啊!

首先強烈批評!為啥要把個經典的strcpy的引數順序要搞顛倒了?看的忒不爽!

然後你這是在求教呢還是考廣大網友呢?如果說有錯,你怎麼不把錯誤現象貼出來?

以我看,你這程式估計是沒跑死,可能是出亂碼了?

沒跑死的都不是問題,你就這樣安慰自己吧。

順便說一句,那個while迴圈有點問題,會導致出現你不希望看到的情況,自己檢查一下那個判斷的邊界條件。

為了讓你清晰看到那個錯誤,不多改,在while迴圈後邊加一句吧:

*str1 = '\0';

還有,那個printf顯然是會輸出亂碼的。加點兒懸賞分再問吧,碼農都不容易……

c語言之不使用strcpy()函式實現字串複製功能

9樓:匿名使用者

輸出一個字元用的格式是%c,輸出他的ascii值的格式是%d

else

這裡的%d改為%c即可。

c語言題,對strcpy運用錯誤的是??

10樓:水主沉浮

要往一個地址裡copy字串,這個地址需要被分配了合適大小的記憶體,並且這記憶體是可以寫入的。

str1和str2都被分配了記憶體,在棧區分配的。

str3只是一個指標,沒有被分配記憶體,當然也不能往裡面存東西了。

其實str4也不能存東西,即答案d也錯誤,因為str4指向的是常量區,只能讀取,不能修改。

11樓:

恩,826說的對。

char str1//建立char陣列,建立陣列時同時進行了初始化,可以預設最後一維的引數。

char str2[8] //建立char陣列char* str3 //建立char指標變數char* str4 = "string" //建立char指標變數,並且初始化指標變數指向常量字串"string"

這麼解釋,你是不是就可以明白了

12樓:儒雅的點點丶

你可以這樣替換一下看.

a答案可以替換成str1[7],代表的是str1一建立就分配了7個位元組的空間。

b答案str2[8]代表的是,str2一建立就在棧空間分配8個位元組。

c答案*str3這個字元指標沒有指向任何記憶體,所有你要往裡面填東西是不可以的,指標就好比**號碼如果你沒有啟用它(記憶體),那麼撥出去的就是空號,是打不通的。

d答案也一樣的,因為這個**號碼已經啟用了,所以可以撥號。

這樣解釋應該能理解了吧

13樓:匿名使用者

不用逐個解釋的,只有第三個沒有申請記憶體

14樓:竹殤海荼蘼

cccccccccccc

c選項中,c語言不是允許字串指標先定義後賦值的嗎,求指點使用strcpy函式後有什麼區別

15樓:風若遠去何人留

是允許先定義後賦值的

不過 從下面這幾個看 其實嚴格來說 只有a是對的。 bcd三個都有問題。

astring2是新的值,賦值給s1 這個完全沒有問題,。

b s4指向的是常量字串, 這個是常量區的,不允許修改,出現賦值,直接會導致程式崩潰

c s3只是定義了字元指標,沒有分配空間。 對s3賦值, 一樣會導致程式崩潰

d s2沒有初始化,內部為隨機值,而strcpy是遇到\0才停止,所以 這個操作是有可能導致越界的。 於是這個是不確定結果。

16樓:金色潛鳥

s2 作了宣告,但未初始化 或 賦值。

strcpy(s1,s2); 這裡 引數2 要求 是 const char * 型, 也就是 必須是 有了 字串內容的,而不是 尚未 初始化 的 s2.

(也就是說,要給s1 賦 s2, 但 s2 無值,無法賦。-- 編譯器可能不報錯,自己要注意避免。)

若宣告中改成 char s1[ ]=」string1」,s2[8]="",*s3,*s4=」string2」; 那麼 d 就可以了。

c語言中 strcpy()裡面的引數應該是指標還是字串陣列

17樓:匿名使用者

char *ch和char ch[200]這兩個很類似

兩個ch都指向的是地址

c++裡如何用strcpy複製給字串指標?

18樓:匿名使用者

有3處錯誤

1、a="hallo"; a變數是一個字元,不是字串,也不是字元指標,所以不能賦予字串。

2、strcpy(*p,a); strcpy兩個引數都為字元指標,傳進去的應該是地址或字串首地址。

3、cout<<*p<

using namespace std;

void main()

19樓:匿名使用者

#include

#include

using namespace std;

void main()

c語言指標陣列如何存放函式地址C語言指標陣列如何存放函式地址

c c 的指標的靈活,常把許多初學者搞暈,連高手也是如此。1.當然,可以呀,一切資料都可返回 2.複合指標型別直接表示非常麻煩 連高手都是這樣 可以分解成多個簡單型別 typedef void funtype void funtype num 100 分解後簡單多了!3.因為函式名不是字串,初始化時...

C語言檔案指標,C語言中通過檔案指標訪問檔案有什麼好處?

你還沒解決嗎?你的bug應該不是檔案方式的問題。我才起來給你除錯,應該是 這一句的問題 fp1是檔案指標,fopen s函式返回的值型別是errno t 也就是int型別的值,因fp1錯誤的使用,而接受了fopen s函式的返回值,此時fp1指標的值變成0x0000000d fopen s函式的返回...

c語言為什麼會有指標?c語言為什麼要有指標呢?

指標是c中的精髓,如果沒有,應該說就是一種很平庸的語言,從本質上說,指標體現了von neumann體系結構計算機也就是當今計算機的特徵,記憶體資料按照當前的解釋決定其意義,其指標的運算更是以機器實現的方式展現出來。具體的主要原因大致如下 1 函式的引數傳遞 c語言只有傳值這樣一種方式,在函式體內不...