我要做的是检查用户输入的单词是否有前五个字母,如果有,我需要将这些字母复制到另一个数组。但是它给我一个错误说"传递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++;
}
}
}
需要帮助来弄清楚这个
有什么问题答案 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;
}