| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:为什么不行,数组问题
只看楼主 加入收藏
fahfuq
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2012-1-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
为什么不行,数组问题
#include <stdio.h>
#include <string.h>
main()
{
    printf("%s",strlwr("HELLO"));
}
这样是不行的,为什么这个不行,上面的行?
#include <stdio.h>
#include <string.h>
main()
{
    char a[]="HELLO";
    printf("%s",strlwr(a));
}

这个是可行的
搜索更多相关主题的帖子: include 
2012-02-07 13:22
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:10 
char *_strlwr( char *string );

它要把转换后的字符串保存到string变量里 你传个常量进去 自然不行

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-07 13:26
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
收藏
得分:10 
strlwr()扩号里面的东西应该是一个地址,你上百度查一下这个函数的用法就懂了。
2012-02-07 13:28
xingzhian
Rank: 2
等 级:论坛游民
帖 子:14
专家分:54
注 册:2011-3-22
收藏
得分:0 
我觉应该是野指针的调用问题。
main()
{
    printf("%s",strlwr("HELLO"));
}
意思等同于:
main()
{
    char *str = "HELLO";
    printf("%s",strlwr(str));
}
这种调用也是错误的,以下是一个转小写的原形:
void* lower_string(char *string1)
{
   while(*string)
   {
      if ( *string >= 'A' && *string <= 'Z' )
      {
         *string = *string + 32;
      }
      string++;
   }
}
可以看到,如果string是一个野指针,则程序出错。
所以要为这个入口分配一个可用的指针,如:char a[]="HELLO"; \\a 也定义好自己的长度。
或者是这样:
main()
{
    char a[]= (char*)malloc(sizeof(char)*10);
    memcpy(a,"Hello",10);
    printf("%s",strlwr(a));
    if(a)
    {free(a);a=NULL;}
}
2012-02-07 16:52
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

#pragma comment(linker,"/SECTION:.rdata,RW")

int main(int argc, char *argv[])
{
    printf("%s\n",strlwr("HELLO"));
}

技术问题,请不要以短消息方式提问
2012-02-07 20:47
快速回复:为什么不行,数组问题
数据加载中...
 
   



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

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