将多行用户输入文本写入文件并使用C中的用户定义命令结束写入会话

将多行用户输入文本写入文件并使用C中的用户定义命令结束写入会话,c,linux,C,Linux,我需要在linux中将多行用户定义的文本写入到一个文件中 我上面有这段代码,但当我按下回车键(enter)时,我的写作会话结束,但我不希望它以回车键结束,当我按下回车键时,我希望我的程序转到下一行,这样我就可以将多行文本写入该文件 最后,当我按下CNTL+D时,我希望我的程序停止编写会话。请问对此有何想法 #include <stdio.h> #include <stdlib.h> int main() { char c[1000]; FILE

我需要在linux中将多行用户定义的文本写入到一个文件中

我上面有这段代码,但当我按下回车键(enter)时,我的写作会话结束,但我不希望它以回车键结束,当我按下回车键时,我希望我的程序转到下一行,这样我就可以将多行文本写入该文件

最后,当我按下CNTL+D时,我希望我的程序停止编写会话。请问对此有何想法

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char c[1000]; 
    FILE *fptr;
    fptr=fopen("program.txt","w");
    printf("Enter a sentence:\n"); 
    gets(c); 
    fprintf(fptr,"%s",c); 
    fclose(fptr);
    return 0; 
}
#包括
#包括
int main()
{ 
字符c[1000];
文件*fptr;
fptr=fopen(“program.txt”,“w”);
printf(“输入句子:\n”);
获取(c);
fprintf(fptr,“%s”,c);
fclose(fptr);
返回0;
}

@Bugra Sezer,
fgets
应该在stdio.h中。您需要对此进行一些修改,以空行或ctrl-d结束

int main(int argc, char *argv[])
{    
    char c[1000];
    FILE *fptr;
    fptr=fopen("program.txt","w");

    printf("Enter a sentence:\n");

    while (fgets(c, 1000, stdin) != NULL)
    {
        if (strcmp(c, "\n") == 0)
            break;

        fprintf(fptr,"%s",c);
        printf("Enter a sentence:\n");
    }

    fclose(fptr);

    return(0);
}

需要筛选出
'\n'
的循环。请使用while循环。不要使用
获取
使用fgets
注意,
gets()
(首先不应该使用)删除换行符,但是您的
fprintf()
不会再次添加换行符。filterin'\n'的含义是什么?我应该如何定义while循环?我想我需要这样定义…while(当ctnl+D时)按)这当然是一个想法,ı将如何编写代码?同样,编撰人不认可FGET。您可能想看看这个答案:类似问题的答案。