2013-06-24 205 views
2

我需要在每個小寫字母上放置*,但是我的程序塊總是被阻塞。雖然這看起來像一個簡單的問題,我無法找到簡單的解決方案。請幫忙。將值賦給指針C

#include <stdio.h> 

void f(char *p) 
{ 
    int i = 0; 
    char c = '*'; 
    while(p[i] != '\0') 
    { 
     if(p[i]> 96 && p[i] < 122) 
     { 
      p[i] = c; # here program block 
     } 
     i++; 
    } 
    printf("%c",p); 
} 

int main(void) 
{ 
    f("tesT"); 
    return 1; 
} 

我在網上發現了一些類似的問題,但沒有成功。 :(

+0

這個問題是問非常頻繁[請閱讀任何C FAQ。](http://stackoverflow.com/questions/164194/why-do-i-get-a-segmentation-fault-when-writing-to-a-string) – Lundin

回答

8

不能修改字符串常量

嘗試:。

int main(void) 
{ 
    char buf[] = "tesT"; 

    f(buf); 

    return 1; 
} 

也從來沒有硬編碼的ASCII值,使用islower()<ctype.h>