c - 如何将字符从文件传递到指针
问题描述
我必须将文件中的最多 100 个字符传递给 char 指针。为什么会出现分段错误错误?
#include <stdio.h>
void read_file(FILE *in, char *s);
int main(void){
FILE *in;
char *s;
in = fopen("input", "r");
read_file(in,s);
printf("%s", s);
return 0;
}
void read_file(FILE *in, char *s){
int c, count = 0;
while((c=getc(in))!=EOF && count < 100){
s[count] = c;
count++;
}
}
这个错误已经困扰了我一段时间,我不明白为什么。
解决方案
s
是一个未初始化的指针。它没有指向任何地方。
你要这个:
char s[100];
代替:
char *s;
我建议您阅读 C 教科书中有关指针的章节。
您还需要检查是否fopen
成功:
in = fopen("input", "r");
if (in == NULL)
{
printf("Can't open file\n");
exit(1);
}
推荐阅读
- c# - 如何访问在 startup.cs 中定义的 program.cs 中的单例服务
- extjs - 如何在使用其参考选择的按钮上触发事件
- c++ - 在 Visual Studio 2019 的 linux 项目的链接器中设置静态库 (libconfig.a) 的路径
- node.js - 与 Sapper 兼容的设置,可从单个 Express/Polka 入口点为多个应用程序提供服务
- c# - 如何使用反射动态传递表名
- java - 与 ProcessBuilder 一起更改环境变量的问题
- reactjs - React-testing-library 用产生警告
- c# - 如何使用带有 OData 的 Automapper Queryable 扩展,嵌套 $select
- r - 我们如何检测在 R 中具有不同结果的观察结果?
- spring-boot - 如何在 Thymleaf 中动态设置数字类型的最大值