怎样用指针将一个指定的字符插入另一个字符串的指定位置??? 我是c语言初学者……求指教

u010672692 2013-05-15 05:30:50
指针用得一点也不熟悉,求大家指教!
...全文
2166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangkdm 2013-05-16
  • 打赏
  • 举报
回复
我勒个去 没看清题目
liangkdm 2013-05-16
  • 打赏
  • 举报
回复
#include <stdio.h> int main() { char str[15] = "hello world"; char *p = str; int i = 4; printf("%c\n",p[i]); return 0; } 这样可以吗?
赵4老师 2013-05-16
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
char s[256];
char *p;
int r,n,i;
int main() {
    while (1) {
        printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");
        fgets(s,256,stdin);
        if ('\n'==s[0]) break;
        p=s;
        while (1) {
            p=strstr(p,"%20");
            if (p) {
                memmove(p+1,p+3,strlen(p)-3+1);
                p[0]=' ';
            } else break;
        }
        p=s;
        while (1) {
            p=strstr(p,"你懂得");
            if (p) {
                memmove(p+6,p+6,strlen(p)-6+1);
                for (i=0;i<6;i++) p[i]='X';
            } else break;
        }
        printf("%s",s);
    }
    return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//


hugett 2013-05-15
  • 打赏
  • 举报
回复

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

void insert(char *str, char *pch, int pos){
	int l = strlen(str);
	for(int i = l - 1; i >= pos; --i){
		*(str + i + 1) = *(str + i);
	}
	*(str + pos) = *pch;
	*(str + l + 1) = 0;
}

int main(){
	char str[100] = "abcdefg";
	char ch = '2';
	puts(str);
	insert(str, &ch, 3);
	puts(str);
	return 0;
}
starytx 2013-05-15
  • 打赏
  • 举报
回复
无聊写了一下,仅供参考:
void insertChar(char *src ,char chr ,int nPos)
{
    if (src == NULL || nPos > strlen(src))
    {
        return;
    }

    char *p = src + strlen(src) + 1;  // p指向结束符的下一个位置
    while ((p - src) >= nPos)         // 没有=的话插入后的效果是插入字符位与第nPos+1的位置(从1开始数),这个自己根据情况选择
    {
        *p = *(p-1);
        p--;
    }
    *p = chr;
}



 int main()
{
    char strSrc[20] = "hello world";

    insertChar(strSrc ,'X' ,8);
    printf("%s\n" ,strSrc);

    return 0;
}
starytx 2013-05-15
  • 打赏
  • 举报
回复
首先要保证目标字符串还有至少1个可用空间,然后定义一个指针p指向字符串结束符的下一个位置,然后在循环中让*p = *(p-1); // 让每一个字符等于前一个字符 循环到指定位置时结束可以通过比较(p - 字符串首地址)是否等于指定位置来结束循环。最后*p = 指定那个字符就完了。注意处理好临界情况
nirvana_newbie 2013-05-15
  • 打赏
  • 举报
回复
指针不行,只能是数组。 char *s="abcdfg"; char c='e'; s[4]=c;是错误的。
海的神话 2013-05-15
  • 打赏
  • 举报
回复
只能逐个字符拷贝到目的字符串里了。而且要注意如果目的字符串是在堆上动态分配的内存,一定要重新分配足够的内存

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧