| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3299 人关注过本帖
标题:用指针指向一条字符串,如何使其中某个字符变成'\0'?
只看楼主 加入收藏
飞跃的乌龟
Rank: 2
等 级:论坛游民
帖 子:96
专家分:18
注 册:2012-10-20
结帖率:90.32%
收藏
已结贴  问题点数:20 回复次数:8 
用指针指向一条字符串,如何使其中某个字符变成'\0'?
作用是再次输出这条字符串时,改变的字符以及后面的字符就不再输出了。;
搜索更多相关主题的帖子: 字符串 如何 
2012-12-10 17:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
数组可以   字符串常量不可以

DO IT YOURSELF !
2012-12-10 17:15
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
比如:
char str[] = "123456";
str[3] = '\0'; // 字符'4'被替换为'\0'
printf("%s", str); // '\0'代表字符串结束,所以只会输出:123

My life is brilliant
2012-12-10 17:22
飞跃的乌龟
Rank: 2
等 级:论坛游民
帖 子:96
专家分:18
注 册:2012-10-20
收藏
得分:0 
回复 2楼 wp231957
我试过*(p+m-1)='\0'不抱错,但运行不了,调试时到那就停,出了一段英文,没看懂。是不是还得int s[],吧字符串放进去,再找某个s[],赋值'\0'?
2012-12-10 17:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用飞跃的乌龟在2012-12-10 17:23:55的发言:

我试过*(p+m-1)='\0'不抱错,但运行不了,调试时到那就停,出了一段英文,没看懂。是不是还得int s[],吧字符串放进去,再找某个s[],赋值'\0'?
你还是上代码吧  

DO IT YOURSELF !
2012-12-10 17:24
飞跃的乌龟
Rank: 2
等 级:论坛游民
帖 子:96
专家分:18
注 册:2012-10-20
收藏
得分:0 
回复 5楼 wp231957
#include<stdio.h>
char *subs(char *s,int n,int m)
{
    char *p;
    int i;
    p=s;
    while(*p++!='\n')
    {
        i++;
    }
    if(n<0||m<0||m<n||m>i)
    {
        printf("Substring invidal!\n");
        exit(0);
    }
    *(p+m+1)='\n';
    p=*s+n;
    return (p);
}
int main()
{
    char subs(char *s,int n,int m);
    char *s1="The C programing language!";
    printf("%s\n",subs(s1,5,16));
}
目的是输出一串字符的子串,是书上的一道改错题,上面是我改过的,可能也有没改到的,一起说下吧,谢谢了。

[ 本帖最后由 飞跃的乌龟 于 2012-12-10 17:38 编辑 ]
2012-12-10 17:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
程序代码:
#include<stdio.h>
char *subs(char *s,int n,int m)
{
    char *p;
    p=s+n;
    *(p+m)='\0';
    return (p);
}
int main()
{
    char s1[]="The C programing language!";
    char s2[100];
    char *p=s2;
    p=subs(s1,5,16);
    printf("%s\n",p);
    return 0;
}
这是我写的,原题改 还不咋会改 没弄明白为啥要那么写 不需要那么多的代码的

DO IT YOURSELF !
2012-12-10 17:45
飞跃的乌龟
Rank: 2
等 级:论坛游民
帖 子:96
专家分:18
注 册:2012-10-20
收藏
得分:0 
回复 7楼 wp231957
可能是避免这个新定义的函数用到别的地方,出现n,m小于0,n>m,m>字符串长度吧?
2012-12-10 17:50
可乐鸡
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-5-11
收藏
得分:0 
楼主的程序最后怎么改的啊
2022-05-11 20:06
快速回复:用指针指向一条字符串,如何使其中某个字符变成'\0'?
数据加载中...
 
   



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

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