两者都是char但我得到了,从`char'到`char *'的无效转换

时间:2014-05-19 21:08:40

标签: c arrays string

我正在编写仅使用C的程序,我是一名学生,只有5个月的培训。它将打开一个文件,将行存储为字符串,计算我使用的数组中的字符串数,然后关闭该文件。这是我写的函数。

char animalsarray[100][100], xstring='x';
int numlines1;

void preload(){
  int j; 
  strcpy(animalfile,"animals.txt.");
  animals=fopen(animalfile,"r");
  if(animals==NULL){
    printf("ERROR: animals.txt not found!");
    exit(13);
}
for(j=0;j<100;j++){
    strcpy(xstring, animalsarray[j][0]);
}
j=0;
while(sscanf(animalsarray[j][0],100,animals)!= EOF){
    j++;
}
for(j=0;j==100;j++){
    if(animalsarray[j][0]!='x'){
        numlines1++;
    }
}
fclose(animals);

} 我得到的问题是这个

  

错误:char' to字符*&#39;

的转换无效      

错误:初始化`char * strcpy(char *,const char *)&#39;

的参数1      

错误:char' to const char *&#39;

的转换无效      

错误:初始化`char * strcpy(char *,const char *)&#39;

的参数2

将单个字符串放入所有字符串是否有问题?

1 个答案:

答案 0 :(得分:1)

您不仅会混淆strcpy中的订单或参数(它的目的地,然后是来源,因此strcpy(xstring, animalsarray[j][0]);会使其参数倒置),您是将charpointer-to-char混淆。

xstring是一个字母,您正在尝试将其用作字符串。

如果您想将数组的所有元素设置为'x'字符,请尝试使用memset

for(j=0;j<100;j++){
    memset(&animalsarray[j][0], 100, 'x');
}

虽然这并没有将数组的最后一个字符设置为'\0',所以你不会有0个终止字符串。要执行此操作,请在animalsarray[j][99] = '\0';之后添加memset(...);

如果您确实希望将xstring用作以0结尾的字符串,则必须进行初始化:

*xstring="x";