首页 > 解决方案 > 如何将字符从文件传递到指针

问题描述

我必须将文件中的最多 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++;
    }
}

这个错误已经困扰了我一段时间,我不明白为什么。

标签: c

解决方案


s是一个未初始化的指针。它没有指向任何地方。

你要这个:

char s[100];

代替:

char *s;

我建议您阅读 C 教科书中有关指针的章节。

您还需要检查是否fopen成功:

in = fopen("input", "r");
if (in == NULL)
{
  printf("Can't open file\n");
  exit(1);
}

推荐阅读