| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 540 人关注过本帖
标题:c简单的字符串操作!
收藏  订阅  推荐  打印 
yinlang204
Rank: 1
等级:新手上路
帖子:2
积分:122
注册:2008-8-15
c简单的字符串操作!

#include <stdio.h>
#include <string.h>

void trim(char * str1)
{
    char *temp = (char *)str1;
         if(temp)
         {
               temp++;
         }
    return ;
}

void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    trim(str);
    printf("str = [%s]\n", str);
}
我想要的结果是
str = [yinlang]
str = [inlang]
但是实际的结果是
str = [yinlang]
str = [yinlang]
为什么,怎么才能我要的答案呢,trim的返回值还必须是void;请高手帮忙!
搜索更多相关主题的帖子: 字符  void  char  temp  str  
2008-8-15 11:37
p1s
Rank: 3Rank: 3
等级:中级会员
威望:5
帖子:341
积分:3648
注册:2005-11-4

trim函数做了什么么?temp是局部变量,而且也没有针对str1做什么修改啊
不知道LZ想要实现什么功能?
2008-8-15 19:33
asd6791868
Rank: 2
来自:逆流
等级:注册会员
帖子:136
积分:1524
注册:2008-7-27
这样行不行

#include <stdio.h>
#include <string.h>

void trim(char * str1)
{
    char *temp = str1;


               ++temp;

   printf("temp= [%s]\n", temp);
}

void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    trim(str);

}

─條路 :  ┈片天  ┈個人  ─瞬間:

                                    
2008-8-15 19:45
lovelyday
Rank: 1
等级:新手上路
帖子:3
积分:138
注册:2008-8-12

trim函数返回值为空,就不如不要了
#include <stdio.h>
void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    str++;
    printf("str = [%s]\n", str);
}
2008-8-15 21:07
csynyk
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1460
注册:2008-8-9

不知道楼主要做什么!

void trim(char * str1)               
{
    char *temp = (char *)str1;    // temp和str1的类型本来就是相同的,干嘛还要转换一下?---多此一举!
         if(temp)                 //temp表示指针指向的地址,只要最初的str1不为空,那temp++就永远不会位空!
         {
               temp++;      
         }
    return ;
}                               //整个函数没看出对str1做了什么处理!

void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    trim(str);
    printf("str = [%s]\n", str);
}

http://blog.csdn.net/csynyk
2008-8-15 21:16
csynyk
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1460
注册:2008-8-9

如果你想要的结果是不显示字符串的第一个字符,那很简单!
void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
     printf("str = [%s]\n", str+1); //指针往后移一位!
}

http://blog.csdn.net/csynyk
2008-8-15 21:19
shenj
Rank: 1
等级:新手上路
帖子:12
积分:260
注册:2008-3-4

楼主是不是想要这样...用一个方法..
程序代码:
#include <stdio.h>
#include <string.h>

void trim(char **str1)
{
    *str1=(*str1)+1;
}

void main()
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    trim(&str);
    printf("str = [%s]\n", str);
}
2008-8-15 22:00
raymond1010
Rank: 2
等级:注册会员
帖子:43
积分:566
注册:2008-8-9

你的trim并没有做任何返回动作,和main函数没有任何互动,当然达不到你希望达到的目的啦,哈哈
至少有个返回值嘛
就好比我提交你问题让你解决,(你就是函数,我是主函数),但是你没有提交结果给我,我怎么知道你的答案呢
2008-8-15 22:42
shenj
Rank: 1
等级:新手上路
帖子:12
积分:260
注册:2008-3-4

楼上

......你有没有运行过代码...
要求的答案和楼主想要的一样...
看不明不要乱说...

[ 本帖最后由 shenj 于 2008-8-16 01:32 编辑 ]
2008-8-16 01:31
zhoufanking
Rank: 1
等级:新手上路
帖子:7
积分:172
注册:2008-8-10

void trim(char **str);

int main( int argc, const char *argv)
{
    char *str = "yinlang";
    printf("str = [%s]\n", str);
    trim(&str);
    printf("str = [%s]\n", str);
   
    system("PAUSE");   
    return 0;
}

void trim(char **str)
/*因为你要修改str的值,所以这里要将指向str的指针作为参数送到函数里进行处理。lz是不是忘了传值和传指针的不同*/
{
     *str += 1;
}
2008-8-16 09:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.052590 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved