當我編譯並運行我的代碼時,它在打印「開始」後立即出現總線錯誤。 這裏是發生了什麼:來自printf的不合邏輯的總線錯誤C
的bash-3.2 $ ./remDup
開始
總線錯誤
#include <stdio.h>
#include <string.h>
void removeDups(char* str)
{
int len = strlen(str);
int i = 0;
for (i = 0; i < len; i++) {
char a = str[i];
int k = i + 1;
int c = 0;
int j = 0;
for (j = k; j < len; j++) {
if (a != str[j]) {
str[k] = str[j];
k++;
} else c++;
}
len -= c;
}
str[len] = '\0';
}
int main(int argc, const char* argv[])
{
char *str1 = "apple";
printf("%s -> ", str1);
removeDups(str1);
printf("%s\n ", str1);
return 1;
}
哇謝謝。 :)但爲什麼我會在調用removeDups之前得到總線錯誤? – gfrkwiz 2011-03-30 08:49:31
你不這樣做,崩潰在'removeDups' - 你沒有看到你的''%s - >''printf輸出,因爲它沒有'\ n' - 所以它沒有得到事故發生前衝出。 – GrahamS 2011-03-30 08:53:37