尝试使用" strcpy"时指针错误在C中将char元素从一个数组复制到另一个数组

时间:2015-06-10 03:00:57

标签: c

我要做的是检查用户输入的单词是否有前五个字母,如果有,我需要将这些字母复制到另一个数组。但是它给我一个错误说"传递strcpy的参数1使得整数中的指针没有强制转换[默认情况下启用]"。

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

需要帮助来弄清楚这个

有什么问题

2 个答案:

答案 0 :(得分:3)

strcpy有两个输入参数char *。您不能将它用于两个字符。如果要将一个字符从一个数组复制到另一个数组,则需要将= operator用作a1[k] = s1[i]

答案 1 :(得分:2)

你只需要一个循环:
用char替换char:

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

或者,使用strcpy,如下所示:strcpy(a1, s1);

回答你的评论:

  

我尝试了a1 [k] = s1 [i],但它显示了a1 ex-的一些模糊字符:如果s1是&#34; abc&#34; ,a1显示为&#34; abc!&#34;

C字符串需要以空值终止 试着这样做:

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

小例子:

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