我正在尝试编写一个程序,在C中接受两个字符串输入,然后在两个字符串隔行扫描时产生结果。
我想要的一个例子:
input: abdc
input: efgh
result: aebfdgch
这是我到目前为止对该部分的一点代码。
#include <stdio.h>
#include <string.h>
#define maxLen 100
int main() {
char string1[maxLen];
char string2[maxLen];
printf("please enter a string of up to 100 characters: ");
fgets(shuffleString,maxLen,stdin);
printf("please enter another string of up to 100 characters: ");
fgets(shuffleString2,maxLen,stdin);
return 0;
}
我已经尝试了很多东西来进行洗牌工作,但我似乎没有。这是一个家庭作业,所以我不是想让别人为我编写代码,但是一些例子和解释会很好。另外,如果它还不是很明显,这是针对intructory C级的,所以我希望保持尽可能接近我的水平。
答案 0 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *strlace(char *str1, char *str2)
{
int i;
int len = strlen(str1) + strlen(str2) + 1;
char *str = (char*)malloc(len * sizeof(char));
for (i = 0; i < strlen(str1); ++i) {
str[i*2] = str1[i];
}
for (i = 0; i < strlen(str2); ++i) {
str[1+i*2] = str2[i];
}
str[len - 1] = 0;
return str;
}
int main()
{
char *str1 = "abdc";
char *str2 = "efgh";
char *str3 = strlace(str1, str2);
puts(str3);
free(str3);
return 0;
}
似乎有效。 请享用。
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxLen 100
char *
strinter(char *s1, char *s2)
{
char *dst;
int len = strlen(s1) + strlen(s2);
dst = malloc(len + 1);
if(dst == NULL)
return NULL;
for(;*s1 || *s2;){
if(*s1)*dst++ = *s1++;
if(*s2)*dst++ = *s2++;
}
*dst = '\0';
return dst - len;
}
void
chomp(char *s)
{
char *p = strchr(s, '\n');
if(p != NULL)
*p = '\0';
}
int
main(void)
{
char string1[maxLen];
char string2[maxLen];
char *string3;
printf("please enter a string of up to 100 characters: ");
fgets(string1, maxLen, stdin);
printf("please enter another string of up to 100 characters: ");
fgets(string2, maxLen, stdin);
/* remove newlines */
chomp(string1);
chomp(string2);
string3 = strinter(string1, string2);
if(string3 == NULL)
return 1;
printf("%s\n", string3);
free(string3);
return 0;
}
即使两个输入字符串的长度不同,这也会有效。