Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C getline和fgets之间的区别_C - Fatal编程技术网

C getline和fgets之间的区别

C getline和fgets之间的区别,c,C,你好,我目前正在使用C语言编写一个简单的shell 问题是,我使用函数fgets读取stdin,而在考试中它是被禁止的,我必须使用getline,所以可以在不更改整个代码的情况下更改它吗 这是我的密码 void remove_end0fLine(char line[]) { int i = 0; while(line[i] != '\n') i++; line[i] = '\0'; } void read_line(char line[]) {

你好,我目前正在使用C语言编写一个简单的shell 问题是,我使用函数
fgets
读取stdin,而在考试中它是被禁止的,我必须使用
getline
,所以可以在不更改整个代码的情况下更改它吗

这是我的密码

void remove_end0fLine(char line[])
{
    int i = 0;
    while(line[i] != '\n')
        i++;
    line[i] = '\0';
}
  
void read_line(char line[])
{
    char* ret = fgets(line,MAX_CHAR,stdin);
    remove_end0fLine(line);
    
    if( strcmp(line,"exit")== 0 || ret == NULL)
        exit(0);
}

不知道如何回答这个问题而不告诉你怎么做,这有点违背了考试的教育价值。是的,您可以使用getline作为替换,只需进行最小的更改,但是您需要修改
read\u line
的界面,问题在哪里?它不工作?请注意,
getline
正在动态分配内存,这需要清理。但事实上,
fgets
是被禁止的,这让我觉得有些东西你不明白,用
getline
替换它可能只是一个法律漏洞