相关疑难解决方法(0)

从fgets()输入中删除尾随换行符

我试图从用户那里获取一些数据并将其发送到gcc中的另一个函数.代码是这样的.

printf("Enter your Name: ");
if (!(fgets(Name, sizeof Name, stdin) != NULL)) {
    fprintf(stderr, "Error reading Name.\n");
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现它最后有一个换行符\n.所以,如果我输入John它最终发送John\n.如何删除它\n并发送正确的字符串.

c string gcc newline fgets

210
推荐指数
5
解决办法
30万
查看次数

fgets()的返回值

我最近刚开始工作I/OC.这是我的问题 -
我有一个文件,我从中读取了我的输入.然后我用来fgets()在缓冲区中获取字符串,我以某种方式使用它.现在,如果输入对于缓冲区而言太短,即第一次读取fgets()到达时会发生什么EOF.应该fgets()返回NULL(正如我在fgets()文档中看到的那样)?它似乎没有,我得到了正确的输入.除了我feof(input)不说我们已达到EOF.
这是我的代码片段.

char    buf[BUFSIZ];
FILE    *input,
        *output;

input   = fopen(argv[--argc], "r");
output  = fopen(argv[--argc], "w");

/**
 *  If either of the input or output were unable to be opened
 *          we exit
 */
if (input == NULL) {
    fprintf(stdout, "Failed to open file - %s.\n", argv[argc + 1]);
    exit(EXIT_FAILURE);
}

if (output == NULL) {
    fprintf(stdout, "Failed to …
Run Code Online (Sandbox Code Playgroud)

c io fgets

10
推荐指数
1
解决办法
4万
查看次数

标签 统计

c ×2

fgets ×2

gcc ×1

io ×1

newline ×1

string ×1