


小白求教:這同一串代碼win平臺下跑出來沒問題這linux下跑出來缺倆字符
還有一回跑出來的代碼把字串里的字符都自動改了這啥情況啊
uj5u.com熱心網友回復:
源串和目標串重疊,用另外一個函式。uj5u.com熱心網友回復:
試過了不行,搞了3天了頭皮發麻uj5u.com熱心網友回復:
沒看出 有啥問題, strcpy記憶體重疊也是可以的,不會出問題void deletestr(char * str, const char * strd) {
while (1) {
char * pos = strstr(str, strd);
if ( NULL == pos ) return;
strcpy(pos, pos+strlen(strd));
printf("%s\n", str);
}
}
int main(int argc, const char * argv[]) {
char str[] = {"00111001110011000010000"};
printf("01234567890123456789012\n%s\n", str);
deletestr(str, "1");
printf("01234567890123456789012\n%s\n", str);
return 0;
}
你試試看看, 是在什么地方輸出不正常的
正常情況下,deleteStr函式當中strcpy每執行一次, 輸出字串會短一個字符
01234567890123456789012
00111001110011000010000
0011001110011000010000
001001110011000010000
00001110011000010000
0000110011000010000
000010011000010000
00000011000010000
0000001000010000
000000000010000
00000000000000
01234567890123456789012
00000000000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131863.html
標籤:C語言
上一篇:graphics.DrawString怎么把一個int變數顯示出來?
下一篇:為什么浮點數不存盤階碼的符號位
