c - 从fgets()输入中删除结尾的换行符

标签 c string gcc newline fgets

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

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


但是,我发现它最后有一个换行符\n。因此,如果输入John,它将最终发送John\n。如何删除该\n并发送适当的字符串。

最佳答案

稍微难看的方式:

char *pos;
if ((pos=strchr(Name, '\n')) != NULL)
    *pos = '\0';
else
    /* input too long for buffer, flag error */


稍微奇怪的方式:

strtok(Name, "\n");


请注意,如果用户输入空字符串(即仅按Enter),strtok函数将无法正常工作。它使\n字符保持不变。

当然,还有其他的。

关于c - 从fgets()输入中删除结尾的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846433/

相关文章:

c++ - 使用 Homebrew 在 Mac OS X 上安装 GCC 构建的 boost 库

ubuntu - 无法在调试器内调用标准数学函数?

c - 为什么 open() 在 linux 1.0 中没有返回 'fd'?

jquery逐字符显示字符串

iphone - 是否可以用字符串和整数引用变量?

C++连接字符数组

gcc - AARCH64 上的 memcpy 产生未对齐的数据中止异常、ARM GNU 工具链或 newlibc Bug?

c - 为什么我不能在 for 循环中使用 x + 1?

c - C语言中如何从逗号分隔的字符串中获取子字符串

c - 如何在 OpenBSD 中编译单个驱动程序/文件而不编译整个内核?