一千萬個為什麽

搜索

返回指向C中char數組的指針

我在StackOverflow上看到了很多關於它的問題,但是閱讀答案並沒有為我清楚,可能是因為我是C編程的新手。這是代碼:

#include 

char* squeeze(char s[], char c);

main()
{
  printf("%s", squeeze("hello", 'o'));
}

char* squeeze(char s[], char c)
{
  int i, j;

  for(i = j = 0; s[i] != '\0'; i++)
    if(s[i] != c)
      s[j++] = s[i];
    s[j] = '\0';

  return s;
}

它編譯並在運行時出現分段錯誤。我已經閱讀這個常見問題解答關於返回數組並試過'靜態'技術,在那裏建議,但仍然無法使程序工作。任何人都可以指出它究竟出了什麽問題,將來我應該註意什麽?

最佳答案

傳遞給squeeze函數的第一個參數是只讀字符串文字“hello”,您試圖修改它。

而是傳遞一個可修改的char數組:

char str[] = "hello";
printf("%s", squeeze(str, 'o'));

轉載註明原文: 返回指向C中char數組的指針