gpt4 book ai didi

C 程序 - 在每个其他字符之间放置一个星号而不替换字符串中的那些字符

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:44 25 4
gpt4 key购买 nike

这是作业

我必须创建一个程序,在其中我在字符串中的每个其他字符之间放置一个星号。我的程序有点工作,但是当星号应该放在每个其他字符之间而不是在最后一个字符之后时,它会覆盖字符。我的代码中的问题出在 stars 函数和 main.case w 中。您可以忽略其余部分。我会把例子放在我的程序之后。感谢您的帮助!


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

void merge(char *s1, char *s2, char *output)
{

while(*s1 != '\0' && *s2 != '\0')
{
*output++ = *s1++;
*output++ = *s2++;
*output='\0'; }
}

void stars(char *as1, char *as2, char *output2)
{

strcpy(output2, as1);
strcat(output2, as2);

for(int i =1; i < outasteriskput2[i]; i+=2) {
output2[i] = '*';
}



}
int main(int argc , char *argv[])
{
//int i = 3;
char string1[30];
char string2[30];



if (argc == 2) {
switch (argv[1][1]) {

case 'i':
//char string1[30];
//char string2[30];

printf("Please enter a string of maximum 30 characters: ");
scanf("%s" ,string1);
printf("Please enter a string of maximum 30 characters: ");
scanf("%s" ,string2);

char *output=malloc(strlen(string1)+strlen(string2)+1);
//allocate memory for both strings+1 for null
merge(string1,string2,output);
printf("%s\n",output);
break;


case 'w':

printf("Please enter a string of maximum 30 characters: ");
scanf("%s" ,string1);
printf("Please enter a string of maximum 30 characters: ");
scanf("%s" ,string2);

char *output2=malloc(strlen(string1)+strlen(string2));
//allocate memory for both strings+1 for null
stars(string1, string2, output2);
printf("%s\n",output2);
break;
}


}
return 0;
}

What my program does:
Enter String 1: abc

Enter String 2: 123

Output a*c*2*

What it should do:

Enter String 1: abc

Enter String 2: 123

输出 a * b * c * 1 * 2 * 3-> 不应该有任何空格,我只是用空格将其分隔,因为网站会将整个内容以斜体显示

最佳答案

这个解决方案接近于原来的解决方案:

void stars(char *as1, char *as2, char *output2)
{

char *buffer=malloc(strlen(as1)+strlen(as2)+1);

strcpy(buffer, as1);
strcat(buffer, as2);

int i, k = 0;

for (i=0; i < 2*strlen(buffer)-1; i++)
if (i%2){
output2[i] = '*';
} else {
output2[i] = buffer[k];
k++;
}
output2[i] = '\0';
}

它创建了一个足够大的缓冲区来容纳两个输入字符串。同时,output2是一个比as1和as2加起来大两倍大小的char数组,这样可以容纳*和结束符,

char *output2=malloc(2*(strlen(string1)+strlen(string2)));

循环遍历 output2 数组并在每个奇数索引位置插入一个星号,即当 i%2 不是 0.0 时。当 i%2 为零时,它从 buffer 插入字符,同时为 buffer 数组使用单独的索引 k。它在 i = 2*strlen(buffer)-1 处停止以避免将 * 放在 as2 的最后一个字符之后并放置 NULL 字符在生成的 output2 数组的末尾。

关于C 程序 - 在每个其他字符之间放置一个星号而不替换字符串中的那些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com