这是我在这里的第一个问题,所以我感谢每一种帮助。
我试图获得文件中最长行的长度,这样我就可以稍后调用它并读入整个文件。我的第一次尝试是动态的,但没有成功。
到目前为止,我的代码是:
FILE *inputData;
inputData = fopen("input.txt", "r");
char *input = NULL;
int longestLinelength = 0;
while(fscanf(inputData,"%[^\n]", input) != EOF) {
if(longestLineLength<strlen(input)){
longestLineLength=strlen(input);
}
}
fclose()
不幸的是,这段代码会导致内存访问错误。
3条答案
按热度按时间ggazkfy81#
zujrkrfu2#
我认为问题不在于realloc,而在于对事物如何运作的误解。
最好仔细阅读一下scanf的作用,以及指针是如何工作的。
input
是一个空指针,你想写入它,这会导致应用程序崩溃。scanf
需要分配内存来写入,它自己不分配内存。通常我会建议使用fgets而不是scanf,因为它更好地处理。scanf
的格式化选项可以在你用fgets
读取它之后完成。um6iljoc3#
可能这个帮助是基于C编程语言这本书的。
首先,我们需要一个main函数来获取文件中的行
然后我们将数据存储到一个新的字符数组中
最后,在main函数中,我们将打开文件并使用前面的函数
一起
希望这对你有帮助