我正在尝试读取函数中的元素并将它们存储在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++;
}
}
答案 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)
fp = fopen(“file.txt”,“r”));
确保文件不是空的。 使用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);
我++;
}
3。如果您出于某种目的使用fscanf(),可以使用 fseek()来检查文件是否为空。