我刚刚开始编程并有一个初学者的问题,我想编写一个函数来逐行读取未知长度的文件.因为我不知道每行的长度所以我使用了getline()函数:
void readDict(FILE *dict_file){
//Read dic
char *line;
size_t len = 0, read;
while((read = getline(&line, &len, dict_file))!=-1){
check(line);
}
free(line);
return;
}
Run Code Online (Sandbox Code Playgroud)
因为getline()有点类似于malloc()和realloc()字符串,所以如果我继续使用这个函数来读取很多未知长度的行,我会得到内存泄漏还是内存不足?
我刚刚开始C编程,我有一个初学者的问题:
int main(int argc, char *argv[])
{
char *a=malloc(1*sizeof(char));
a[0]='a';
a[1]='b';
a[2]='c';
printf("%c\n",a[0]);
printf("%c\n",a[1]);
printf("%c\n",a[2]);
printf("%s\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我想通过逐个输入字符来创建一个由未知长度字组成的字符串.因为我不知道单词的长度所以我只使用malloc.我计划先为一次性字符分配内存,然后在输入新字符时使用reallocate为下一个字符添加新空间.然而,在我malloc(1*sizeof(char))之后,我应该发现我可以在字符串中添加多个字符,为什么会发生这种情况?这是正确的方法吗?
感谢大家花时间阅读我的长问题:)