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語言只有傳值這樣一種方式,在函式體內不...