char* fun(char *s) {
char buffer[50];
int i=0;
while(*s){
if(isdigit(*s)){
buffer[i++]=*s;
}
s++;
}
buffer[i]='\0';
return buffer;
}
int main(){
char *s="o34";
char *p="off";
p=fun(s);
while(*p){
printf("%c",p);
p++;
}
//printf("%s",fun(&s[0]));
//puts(fun(s));
getchar();
}
0
A
回答
0
声明为静态,除去短期问题的缓冲区,但调用函数第二次,第一参考将不再后有旧的内容 - 它仍然会指向缓冲区的新内容。
2
两个问题:
- 你是返回一个指针 字符数组是当地到 功能。
- 在
printf("%c",p);
应该*p
0
一个直接的问题,我看到的是,你从乐趣返回一个临时缓冲区。这会导致未定义的行为。最好将缓冲区传递给函数或使用一些堆分配(并且不要忘记稍后将其释放)。
0
你返回本地阵列地址:
char* fun(char *s){
char buffer[50];
...
return buffer;
}
相关问题
- 1. 为什么我的字符串输出打印出奇怪的字符?
- 2. 为什么 'setprofile' 打印此
- 3. 为什么打印输出不为空?
- 4. 此脚本为什么只打印最多32个字符?
- 5. Java-为什么它打印出null?
- 6. 正在打印此输出为什么,显得格格不入
- 7. 此代码打印什么?为什么?
- 8. 为什么C打印输出较迟?
- 9. 为什么输出打印两次?
- 10. 为什么我打印3次输出?
- 11. 为什么输出不打印列表?
- 12. 为什么`ipython foo.py bar.py`只打印`foo.py`的输出?
- 13. 为什么打印“\\”只打印出一个反斜杠?
- 14. 这个C程序为什么在输出中打印奇怪的字符?
- 15. 它为什么打印整数
- 16. 为什么我的程序打印出奇怪的数组值?
- 17. 打印出我的letterList数组时,为什么我的程序跳过数字?它仅打印出AZ和AZ
- 18. Json输出s ---只是打印输出
- 19. 为什么此代码打印两次?
- 20. 为什么此代码不打印“20”?
- 21. 此代码为什么打印地址?
- 22. 打印输出,因为它与进程
- 23. 为什么我的数组不打印出我的输入?
- 24. Zend_Test_PHPUnit如何打印异常/输出?
- 25. Jsoup输出 - 元素只打印一次,如果它重复
- 26. 为什么此日志记录配置不会打印到标准输出?
- 27. 的InputStream打印怪异字符
- 28. 奇怪的java打印输出
- 29. 为什么我的输出打印出两次?
- 30. 打印int []时为什么会出现垃圾输出?
该程序看起来不会很快输出“很奇怪”。它输出了什么? – BoltClock 2010-10-19 15:40:07
投票结束,这里没有真正的问题。 – 2010-10-19 15:40:20
这是缩进问题。 – 2010-10-19 15:46:11