2013-06-24 168 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>