| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 775 人关注过本帖
标题:c语言字符串问题!!!急!!!!
只看楼主 加入收藏
wye1215
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-18
收藏
 问题点数:0 回复次数:9 
c语言字符串问题!!!急!!!!
/*我的源码*/
char * tt(){
       int n=0;
       char *s1;
       char   s2[100];
       s1=s2;

       for(n=0;n<100;n++)
               s2[n]='a';

        return s1;
}


main(){
    printf("%s",tt());
}

/*为什么结果是乱码? 这个问题已经折磨我好几天了。
这样也是乱码:
main(){
int i=0;   
 char *ss=tt();

while(*ss != '\0'){
      printf("%c",*(s+i));
      i++;
}
      

}

*/
搜索更多相关主题的帖子: c语言 字符 
2005-04-18 13:42
yukk
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-3-7
收藏
得分:0 
char *ss=tt();

你还没有定义tt吧。
2005-04-18 14:03
lycnsc
Rank: 1
等 级:新手上路
帖 子:243
专家分:0
注 册:2005-3-27
收藏
得分:0 
"char * tt(){" 不懂!
2005-04-18 14:03
baby
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2004-9-3
收藏
得分:0 
恩?

喝一碗孟婆汤,走一遍奈何桥…………
2005-04-18 14:46
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
char *s1;
是局部变量,当程序执行完tt()后,就不敢保证s1所占的地址的内容了,
他可能已经被别的数据占了!所以内容也改变了,变成乱码了!

差点把你忘了...
2005-04-18 15:38
wye1215
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-18
收藏
得分:0 
版主果然高人!那该如何解决?
象这类由函数返回字符串的问题该如何解决?
2005-04-18 15:51
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
用静态变量来处理,最简单的一种方法,不过不是最好的!!!
static char   s2[100];
这时候申请的s2不是在栈中而是在数据区中了,不会因为函数的结束而释放s2指向的内存!

差点把你忘了...
2005-04-18 16:00
城门口
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-4-8
收藏
得分:0 
for(n=0;n<99;n++)
s[n]='a';
s[99]='\0';
应该可以!
2005-04-18 17:58
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 

#include<stdio.h> char *tt(){ int n=0; char *s1; char s2[100]; for(n=0;n<100;n++) s2[n]='a'; s1=s2; return s1; }

main(){ printf("%c\n",*tt()); } 上机运行去就知道了。s1指向数组a[]的首地址.也就是a[0]的地址\


生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-18 23:41
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 

#include<stdio.h> char *tt(char s2[]){ int n=0,i=0; char *s1; for(n=0;n<9;n++) {s2[n]='a'+i; i++; } s2[9]='\0'; s1=s2; return s1; }

main(){ char s2[10],*s=tt(s2); while(*s!='\0') { printf("%c\t",*s++); }

} /*嘿嘿。上机去验证我改的。进来Q群4781975, 我把你的题目完全改了。 那样或许会看点 */


生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-19 07:07
快速回复:c语言字符串问题!!!急!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044299 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved