beiya14
beiya14

Reputation: 1

Strings in C Language

How can you code this in C language if the output is like this? I need strings format of the code because our topic is strings.

#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();
}

Output:

Hello -> (user input)

World -> (user input)

HWeolrllod -> (result)

Upvotes: 0

Views: 815

Answers (5)

Naman_DT98
Naman_DT98

Reputation: 89

You can see that output needs to be a String containing all chars of User String1 and User String2 one by one...

You can do this like...

//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

Upvotes: 0

Sourav Badami
Sourav Badami

Reputation: 779

#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");
       }
}

This is your required code.

Upvotes: 0

Harish
Harish

Reputation: 425

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++;
  }

 }

 }

Upvotes: 2

BlackBear
BlackBear

Reputation: 22979

Ok, here's your code. Come on guys, if he asked here it means he can't solve this.

#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;
}

Basically the loop picks up a character from str1 and appends it to result. Then it picks a character, which stands in the same position as the first from str2 and appends it to result, just as before. I increment c2 by 2 every time because I'm adding 2 chars to result. I check if c1 is bigger that the length of the strings because I want to copy only the characters in the string without the terminating \0. If you know that your strings have the same length you can omit these ifs.

Upvotes: -4

paxdiablo
paxdiablo

Reputation: 881113

Okay, you need to do some investigating. We don't, as a general rule, do people's homework for them since:

  • it's cheating.
  • you'll probably get caught out if you copy verbatim.
  • it won't help you in the long run at all.

The C library call for user input that you should use is fgets, along the line of:

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

This will input a string into the character array called buffer.

If you do that with two different buffers, you'll have the strings in memory.

Then you need to create pointers to them and walk through the two strings outputting alternating characters. Pointers are not an easy subject but the following pseudo-code may help:

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)

Translating that into C will take some work but the algorithm is solid. You just need to be aware that a character pointer can be defined with char *p1;, getting the contents of it is done with *p1 and advancing it is p = p + 1; or p1++;.

Short of writing the code for you (which I'm not going to do), there's probably not much else you need.

Upvotes: 9

Related Questions