用c语言发送静态数组,用指针捕捉
我创建的静态库有问题。在我将主代码移到库中之前,一切都正常,但当我添加库时,我发现了错误,无法确切地找出原因 我有一个名为用c语言发送静态数组,用指针捕捉,c,dynamic,segmentation-fault,static-libraries,C,Dynamic,Segmentation Fault,Static Libraries,我创建的静态库有问题。在我将主代码移到库中之前,一切都正常,但当我添加库时,我发现了错误,无法确切地找出原因 我有一个名为addEntry(char*name,char*buildings)的函数 当我调用主c文件中的函数时,我使用 addEntry(name,building) 我将name声明为char*name,并相应地使用malloced 但是,我将构建声明为静态数组char building[256] 在我开始将所有内容移动到静态库之前,所有内容都正常工作,但现在我遇到了一个问题 有
addEntry(char*name,char*buildings)的函数代码>
当我调用主c文件中的函数时,我使用
addEntry(name,building)
我将name声明为char*name
,并相应地使用malloced
但是,我将构建声明为静态数组char building[256]
在我开始将所有内容移动到静态库之前,所有内容都正常工作,但现在我遇到了一个问题
有人知道怎么了吗
编辑:这是代码
printf("list building: ");
while (fgets(building,sizeof(building),stdin) != NULL)
{
if (building[strlen(building)-1] == '\n')
{
building[strlen(building)-1] = '\0';
break;
}
}
//Everything below I am trying to move into my function addEntry,
//where everything stays the same, but I have to use the parameters
//i stated above
ptr = strtok(building,",");
while (ptr != NULL)
{
strcpy(temp,ptr);
strcat(temp,"buildingUsers");
tempFP = fopen(temp,"r");
fp = fopen(temp,"a");
if (tempFP == NULL)
{
fprintf(fp,"%s",name);
} else {
tempREAD = fopen(temp,"r");
while (fgets(readBuffer,sizeof(readBuffer),tempREAD) != NULL)
{
if (strstr(readBuffer,name) != NULL)
{
foundCounter++;
}
}
if (foundCounter == 0)
{
fprintf(fp,"\n%s",name);
} else {
;
}
}
ptr = strtok(NULL,",");
strcpy(temp,"");
fclose(fp);
fclose(tempFP);
fclose(tempREAD);
}
不,我们不能不看代码就知道出了什么问题。发布一个演示问题的最小示例。@PaulGriffiths将在现在编辑的代码中进行编辑@PaulGriffiths您需要展示一些我们可以实际编译的内容,一个完整的示例,其中除了足以引起您的问题外,没有任何内容。我怀疑sizeof(building)如果building
不再在调用sizeof
的同一范围内声明,则返回指针的sizeof
而不是数组大小。(但那只是在看茶叶,看不见茶叶)