String 如何将calloc创建的内存缓冲区指针传递给子函数?
这是我的密码: 我必须动态地为字符串Str1创建一些内存,并以递归方式将其指针传递给其他两个函数。代码可以编译,但当它进入Function2时,会生成一个异常,表示无法写入c[i],指针错误?i、 e.它不会写入Str1 我做错了什么String 如何将calloc创建的内存缓冲区指针传递给子函数?,string,memory-management,String,Memory Management,这是我的密码: 我必须动态地为字符串Str1创建一些内存,并以递归方式将其指针传递给其他两个函数。代码可以编译,但当它进入Function2时,会生成一个异常,表示无法写入c[i],指针错误?i、 e.它不会写入Str1 我做错了什么 void Function1(void) { char *Str1; Str1 = calloc(25, sizeof(char)); pFileIn = fopen("in.txt", "r"); pFileOut = fope
void Function1(void)
{
char *Str1;
Str1 = calloc(25, sizeof(char));
pFileIn = fopen("in.txt", "r");
pFileOut = fopen("out.txt", "w+");
if (pFileIn==NULL) printf("Error opening file");
else
{
while (Function2(pFileIn, Str1))
{
if (! Function3(pFileOut, Str1))
{
fseek(pFileOut, 0, SEEK_END);
fprintf(pFileOut, "%s", Str1);
rewind(pFileOut);
}
}
fclose(pFileIn);
fclose(pFileOut);
}
int Function2(FILE* f, char * c)
{
int i=0;
do
{
c[i] = fgetc(f);
if (c[i]==EOF)
return FALSE;
} while (c[i++]!='\n');
c[i] = '\0';
return TRUE;
}
int Function3(FILE* f, char * c)
{
char *Str2;
Str2 = calloc(25, sizeof(char));
while (Function2(f, Str2))
{
if (strcmp(c, Str2)==0)
return TRUE;
}
rewind(f);
return FALSE;
}
您能保证输入行为24个字符或更短吗?如果行较长,代码将尝试写入坏内存。请尝试getline。否则,如果循环达到max character.int Function2FILE*f,char*c,int n_size{int i=0;do{c[i]=fgetcf;if c[i]==EOF return FALSE;}而c[i++]!='\n'&&i