Arrays 读取stdin时,将char传递给char*类型时出错
在一个更大程序的一部分中,我试图将一行读入结构的一个元素,读入结构的数组。我想跳过行中的空格,行看起来像这样:“vt ab cda” 这就是我得到的错误: 错误:将“char”传递给“char*”类型的参数的整数到指针转换不兼容;使用&[-Werror,-Wint转换]获取地址 strcpy(字典[计数器])。第二行[i],c) 以下是我的代码部分:Arrays 读取stdin时,将char传递给char*类型时出错,arrays,c,pointers,struct,Arrays,C,Pointers,Struct,在一个更大程序的一部分中,我试图将一行读入结构的一个元素,读入结构的数组。我想跳过行中的空格,行看起来像这样:“vt ab cda” 这就是我得到的错误: 错误:将“char”传递给“char*”类型的参数的整数到指针转换不兼容;使用&[-Werror,-Wint转换]获取地址 strcpy(字典[计数器])。第二行[i],c) 以下是我的代码部分: for (counter=0; counter<=MAX_DICT_WORDS-1; counter++) {
for (counter=0; counter<=MAX_DICT_WORDS-1; counter++)
{
if (counter%3==1)
{
i=0;
char c;
c=getchar();
while (!(c==' '))
{
strcpy(dictionary[counter].line_two[i],c);
i+=1;
}
}
对于(counter=0;counterstrcpy将字符串作为参数,但c不是字符串。您不显示字典是如何声明的,因此很难进一步提供帮助。一般来说,您可以将字母逐个读入临时缓冲区,然后在找到空格strcpy时将该单词复制到字典中,或者逐行读取。现在,我似乎正在学习strcpy很生气你给了它一个糟糕的数据类型;c是一个char
,需要是一个char*
。可能像char c[1]
?使用字典[counter]。第二行[i++]=c;
而不是strcpy()
。但您还需要修复while循环-可能是一个if
:if(c!='')
,我想。您也需要使用null终止字符串。@NickReed:它必须至少是字符c[2];
,这样您就可以使用null终止符。使用标准c或POSIX。