C语言中的字符串

时间:2011-01-27 13:20:28

标签: c

如果输出是这样的话,如何用C语言编写代码呢?我需要字符串格式的代码,因为我们的主题是字符串

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

void main() 
{ 
    char my_string[50];

    printf("Enter a word:");
    scanf("%s", my_string);

    printf("Enter a word:");
    scanf("%s", my_string);

    // Some unknown code here...
    // this part is my only problem to solve this.

    getch();
}

输出:

Hello -> (user input)

World -> (user input)

HWeolrllod -> (result)

5 个答案:

答案 0 :(得分:9)

好的,你需要做一些调查。作为一般规则,我们不会为他们做家庭作业,因为:

  • 这是作弊。
  • 如果你逐字复制,你可能会被抓住。
  • 从长远来看,它无助于你。

您应该使用的C库调用用户输入是fgets,沿着以下行:

char buffer[100];
fgets (buffer, sizeof(buffer), stdin);

这会将一个字符串输入到名为buffer的字符数组中。

如果你使用两个不同的缓冲区,那么你将拥有内存中的字符串。

然后你需要创建指向它们的指针并遍历输出交替字符的两个字符串。指针不是一个容易的主题,但以下伪代码可能会有所帮助:

set p1 to address of first character in string s1
set p1 to address of first character in string s1
while contents of p1 are not end of string marker:
    output contents of p1
    add 1 to p1 (move to next character)
    if contents of p2 are not end of string marker:
        output contents of p2
        add 1 to p2 (move to next character)
while contents of p2 are not end of string marker:
    output contents of p2
    add 1 to p2 (move to next character)

将其转换为C将需要一些工作,但算法是可靠的。您只需要知道可以使用char *p1;定义字符指针,使用*p1获取其内容并使其前进p = p + 1;p1++;。< / p>

没有为你编写代码(我会去做),你可能没有其他需要。

答案 1 :(得分:2)

void main()

{

 char my_string1[50],my_string2[50];  int ptr;
 ptr=0;
 printf("Enter a word : ");
 scanf("%s",my_string1);
 printf("enter a word");
 scanf("%s",my_string2);

while(my_string1[ptr]!='\0' && my_string2[ptr]!='\0')
 {
 printf("%c%c",my_string1[ptr],my_string2[ptr]);
 ptr++;
 }


 if(my_string1[ptr]!='\0')
 {
  while(my_string1[ptr]!='\0')
   { printf("%c",my_string1[ptr]);
    ptr++;
   }
 }
else
{
  while(my_string2[ptr]!='\0')
 {printf("%c",my_string2[ptr]);
  ptr++;
  }

 }

 }

答案 2 :(得分:0)

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
void main() 
{ 
       char my_string1[50],my_string2[50];
       int i,l1=1,l2=0;

       printf("Enter a word:");
       scanf("%s", my_string1);

       printf("Enter a word:");
       scanf("%s", my_string2);

       l1=strlen(my_string1); /* Length of 1st string */
       l2=strlen(my_string2); /* Length of 2nd string */
       if(l1==l2)
       {
            for(i=0;i<l1;i++)
            {
                printf("%c%c",my_string1[i],my_string2[i]);
            }
       }
       else
       {
                printf("Length of the entered strings do not match");
       }
}

这是您需要的代码。

答案 3 :(得分:0)

你可以看到输出必须是一个包含User String1和User String2的所有字符的字符串......

你可以这样做......

//add #include<String.h>
int l1=strlen(s1);
int l2=strlen(s2);
if(l1!=l2)
{
    printf("length do not match");
    return 0;
}
char ansstr[l1+l2];
int i,j=0,k=0;
for(i=0;i<l1+l2;i=i+2)
{
    ansstr[i]=s1[j];
    ansstr[i+1]=s2[k];
    j++;
    k++;``
}
//ansstr is your answer

答案 4 :(得分:-4)

好的,这是你的代码。来吧,如果他在这里问这意味着他无法解决这个问题。

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

int main(int argc, char *argv[])
{
    char str1[] = "abcdefghijklmopq";
    char str2[] = "jklm";

    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int c1 = 0, c2 = 0;
    int max = (len1 > len2) ? len1 : len2 ;

    char *result = malloc(len1 + len2);

    for(c1 = 0; c1 <= max; c1++) {
        if(c1 < len1)
            result[c2++] = str1[c1];

        if(c1 < len2)
            result[c2++] = str2[c1];
    }

    result[c2] = 0;

    printf("\n%s\n", result);

    return 0;
}

基本上,循环从str1中选取一个角色并将其追加到结果中。然后它选择一个字符,该字符与str2中的第一个字符位于相同位置,并将其附加到结果,就像之前一样。我每次都会将c2增加2,因为我要向result添加2个字符。我检查c1是否大于字符串的长度,因为我只想复制字符串中的字符而没有终止\0。如果你知道你的字符串长度相同,你可以省略这些ifs。