Zac
Zac

Reputation: 13

Pointer error when trying to use "strcpy" in C to copy char elements from one array to another

What I am trying to do is check if the word entered by the user has first five alphabetical letters and if it has, I need to copy those letters to another array.But it gives me an error saying "passing argument 1 of strcpy makes pointer from integer without cast[enabled by default]".

char s1[100];
char a1[100];
char alpha[5]={'a','b','c','d','e'};
int i,j,k=0;

printf("Enter a word");
fgets(s1,100,stdin);

for(i=0;i<strlen(s1);i++)
{
   for(j=0;j<5;j++)
   {
     if(s1[i]==alpha[j])
     {
       strcpy(a1[k],s1[i]);
       k++;
     }
   }
}

Need help to figure out what is wrong with this

Upvotes: 1

Views: 252

Answers (2)

Andreas DM
Andreas DM

Reputation: 11008

You only need one loop:
Replace char by char:

for(i = 0; i < strlen(s1); i++)
{
    a1[i] = s1[i];
}

Or, use strcpy like this: strcpy(a1, s1);


Answering your comment:

I tried a1[k]= s1[i] but it displays some vague characters for a1 ex-: if s1 is "abc" , a1 displays as "abc!"

C strings need to be null terminated.
Try doing this:

char s1[100] = {0};
char a1[100] = {0};

Small example:

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

int main()
{
    char s1[100] = {0};
    char a1[100] = {0};
    int i,j,k=0;

    printf("Enter a word: ");
    fgets(s1,100,stdin);

    for(i = 0; i < strlen(s1); i++)
    {
        a1[i] = s1[i];
    }

    printf("a1 now contains: %s", a1);

    return 0;
}

Upvotes: 2

Amol Saindane
Amol Saindane

Reputation: 1598

strcpy has two input parameters char *. You can't use it for two characters. If you want to copy one character from one array to another then you need to use = operator as a1[k] = s1[i]

Upvotes: 3

Related Questions