我是一名新的C程序员,所以你必须原谅我缺乏知识。慢慢但肯定我正在改善。我想知道为什么我不能使用以下代码来尝试删除' / n'抓取用户输入时fgets引入了。它在第一个打印语句后中断。我觉得好像在做一些危险的事情,但我不确定是什么。
if (fgets(rawCommand, sizeof (rawCommand), stdin)) {
printf( "\nTest: %s\n", rawCommand ); //test print
strcpy( rawCommand, strtok( rawCommand, '\n') ); //to get rid of the '\n' that fgets introduces
rawCommand[ strlen(rawCommand) - 1 ] = '\0';
printf( "\nTest: %s\n", rawCommand ); //test print
所有建议都表示赞赏,但请保持建设性。感谢。
答案 0 :(得分:0)
您的大部分代码都是正确的。但是strcpy()
和strtok()
都不需要。要抛弃潜在的尾随换行符,请考虑以下事项:
size_t len = strlen(rawCommand);
if (len && rawCommand[len-1] == '\n')
rawCommand[len-1] = 0;
正如我在评论中所说。好的工作检查NULL返回表单fgets()
。