c - fscanf 不保存行 - C
问题描述
我正在尝试从打开的文件指针中扫描一行,传递给函数的是标准输入。当我打印出输入的值时,我得到(空)。任何想法为什么 fscanf 不保存价值?这是代码——也如下所示:
char *ReadLineFile(FILE *infile){
char *input;
char buf[MAX];
//check if file pointer is at end of file
if(feof(infile))
return NULL;
//scan from file
fscanf(infile,"%s",input);
printf("%s",input);
input = (char *)malloc(strlen(input)+1);
//handle memory allocation errors
if (input == NULL){
printf("Error allocating memory\n");
return "error";
}
fclose(infile);
return input;
}
解决方案
您必须在使用input
前分配内存fscanf(infile,"%s",input);
。
fscanf(infile,"%s",input);
要求fscanf
读取一个字符串并将其写入input
. 由于input
尚未分配值,更不用说指向为此分配的内存的值,因此未定义行为。
推荐阅读
- python - 对于 sql 查询,如何考虑可能传递或不传递的参数?
- r - 是否可以在不给它一个对象的情况下运行一个函数?
- scala - 更新对象的 RDD
- xml - XSLT 条件比较不同元素之间的属性
- amazon-web-services - Azure DevOps 运行 Ansible Playbook
- sql - 如何在 SQL 中合并/合并/添加两个数组以形成一个新数组?
- python - 为什么我的瓶子服务器工作以命令 python 开始,而不是 python3?
- android - 从 xamarin Visual Studio 2019 上传发布版本时出错
- python - Python Requests 向任何 GET 或 POST 请求添加额外的标头
- excel - 将带有多个附件的电子邮件发送给多个收件人