我正在try 从用户那里获取一些数据,并将其发送到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并发送正确字符串.

推荐答案

优雅的方式:

Name[strcspn(Name, "\n")] = 0;

略显丑陋的方式:

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++相关问答推荐

Bison解析器转移/减少冲突

你能用自己的地址声明一个C指针吗?

球体—立方体重叠:无、部分或全部?

由Go调用E.C.引起的内存快速增长

为什么内核使用扩展到前后相同的宏定义?

在编译时参数化类型定义

如何在C客户端应用程序的ClientHello消息中添加自定义扩展?

struct 上的OpenMP缩减

使用C时,Windows CMD中的argc参数是否包含重定向命令?

Rust FFI--如何用给出返回引用的迭代器包装C风格的迭代器?

&;(str[i])和(&;str)[i]有什么区别?

I2C外设在单次交易后出现故障

在C中包装两个数组?

收到不兼容的指针类型警告,因为函数的返回不是空*,而是 struct 指针

我在C中运行和调试时得到了不同的输出

我可以创建适用于不同endian的 colored颜色 struct 吗?

在C中打印指针本身

为什么argc和argv即使在主函数之外也能工作?

clion.我无法理解 Clion 中发生的 scanf 错误

创建 makefile 来编译位于不同目录中的多个源文件