用C 语言输出,求问各位大佬这个该怎么写(如果能给出完整代码就更好了。。)?
问题描述:
编写函数 void duplicate(char *s, char *c) ,
该函数完成字符重复的功能:
在函数中对s字符串操作,c用来指明要重复的单个字符;
并在main(.)函数中测试该函数(输入输出均在main函数中进行)。
界面如下:
请输入一个字符串:shanghai fudan<回车>
请输入一个字符:a<回车>
更新后的字符串为:shaanghaai fudaan
其中 第一行的shanghai fudan及第二行的a为用户输入,
其他为程序输出。
效果是把字符串(如shanghai fudan)中某个指定的字符(如a)重复一次,如变成shaanghaai fudaan。
答
#include <stdio.h>
#include <stdlib.h>
char s[100];
void duplicate(char *s, char *c){
while(*s!='\0'){
printf("%c",*s);
if(*s==c)
printf("%c",*s);
*s++;
}
}
int main()
{
int i;
char c;
scanf("%s",&s);
getchar();
scanf("%c",&c);
duplicate(s,c);
return 0;
}
答
用strok去切割,用sprintf去组装。
#include <stdio.h>
#include <string>
using namespace std;
#pragma warning(disable:4996)
void duplicate(char* s, char* c) {
if (s == NULL || c == NULL) {
return;
}
char* ptr;
char* res = new char[1000]{ 0 };
ptr = strtok(s, c);
char* tmp = new char[1000];
char* dou = new char[1000];
do
{
printf("切割元素: %s\n", ptr);
sprintf(tmp, "%s\0", ptr);
sprintf(dou, "%s%s\0", c,c);
sprintf(res, "%s%s%s\0", res, tmp, dou);
ptr = strtok(NULL, c);
} while (ptr != NULL);
res[strlen(res) - 2] = '\0';
printf("最终元素: %s\n", res);
}
int main() {
char* arrs = new char[1000]{ "shanghai fudan" };
char* p = new char[1000]{ "a" };
duplicate(arrs, p);
return 0;
}
切割元素: sh
切割元素: ngh
切割元素: i fud
切割元素: n
最终元素: shaanghaai fudaan
答
创建一个新字符串,把内容拷贝到新字符串的时候先判断是否等于输入字符,相等就加入新字符串。
答
供参考:
#include <stdio.h>
#include <stdlib.h>
void duplicate(char *s, char *c)
{
char *p,*q;
char *tmp = (char *)malloc(sizeof(char)*100);
p = s; q = tmp;
while(*p){
if(*p == *c) *q++ = *p;
*q++ = *p++;
}
*q = '\0';
while(*s++ = *tmp++); *s = '\0';
free(tmp);
}
int main()
{
char c, s[100];
gets(s);
scanf("%c",&c);
duplicate(s,&c);
puts(s);
return 0;
}
答
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632