我正在编写仅使用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
将单个字符串放入所有字符串是否有问题?
答案 0 :(得分:1)
您不仅会混淆strcpy
中的订单或参数(它的目的地,然后是来源,因此strcpy(xstring, animalsarray[j][0]);
会使其参数倒置),您是将char
与pointer-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";