我正在尝试从用户那里获取一些数据并将其发送到 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
并发送正确的字符串。
最佳答案
也许最简单的解决方案是使用我最喜欢的鲜为人知的函数之一,strcspn()
:
buffer[strcspn(buffer, "\n")] = 0;
如果您希望它也处理 '\r'
(例如,如果流是二进制的):
buffer[strcspn(buffer, "\r\n")] = 0; // works for LF, CR, CRLF, LFCR, ...
该函数计算字符数,直到它遇到 '\r'
或 '\n'
(换句话说,它找到第一个 '\r'
或 '\n'
)。如果它没有命中任何东西,它会在 '\0'
处停止(返回字符串的长度)。
请注意,即使没有换行符也能正常工作,因为 strcspn
在 '\0'
处停止。在这种情况下,整行只是将 '\0'
替换为 '\0'
。
关于c - 从 fgets() 输入中删除尾随换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682073/