地址没有传递给从main到函数的指针。 C

时间:2015-05-01 19:22:23

标签: c arrays pointers

我正在尝试读取函数中的元素并将它们存储在main中的数组中。我使用指向动态数组的指针,但它不起作用。当我将指针设为NULL并且程序崩溃时,我得到的地址。

这是数组:

char* first_name = malloc(first_name_length*sizeof(char));

来自main的函数调用:

get_first_name(fp, first_name_length, first_name);

功能声明:

void get_first_name(FILE* fp, int length,char* first);

功能定义:

void get_first_name(FILE* fp, int length, char* first){

    char c;
    int i = 0;
    int number_of_conversions;

    number_of_conversions = fscanf(fp, "%c", &c);

    while (!isspace(c)){

        first[i] = c;

        number_of_conversions = fscanf(fp, "%c", &c);

        i++;
    }
}

2 个答案:

答案 0 :(得分:0)

以下内容将完成工作

void get_first_name(FILE* fp, int length, char* first)
{

    int c;
    int i = 0;

    while ( EOF != (c = fgetc(fp) ) && (' ' != c) && (i < (length -1)) )
    {
        first[i] = c;
        i++;
    }
    // terminate the string
    first[i] = '\0';
}

答案 1 :(得分:0)

  1. 以读取模式打开文件
  2.   

    fp = fopen(“file.txt”,“r”));

    1. 确保文件不是空的。 使用fgetc()将有助于保持简单。

      void get_first_name(FILE * fp,int length,char * first)
      {
        char c;
        int i = 0;
        C =龟etc(FP);

      while(c!= EOF&amp;&amp;!isspace(c)){
              首先[i] = c;
              C =龟etc(FP);
              我++;
      }

    2. 3。如果您出于某种目的使用fscanf(),可以使用 fseek()来检查文件是否为空。