gpt4 book ai didi

c - 为什么我不能按以下方式将 strcpy() 与 strtok() 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:13 25 4
gpt4 key购买 nike

我是一个新的 C 程序员,所以你必须原谅我缺乏知识。慢慢地,但我肯定在进步。我想知道为什么我不能使用以下代码来尝试删除 fgets 在获取用户输入时引入的“/n”。它在第一个 print 语句之后中断。我觉得我好像在做一些危险的事情,但我不确定是什么。

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

感谢所有建议,但请保持建设性。谢谢。

最佳答案

您的大部分代码都是正确的。但是 strcpy()strtok() 都不是必需的。要丢弃 可能 尾随的换行符,请考虑以下内容:

size_t len = strlen(rawCommand);
if (len && rawCommand[len-1] == '\n')
rawCommand[len-1] = 0;

正如我在评论中所说。很好地检查从 fgets() 返回的 NULL。

关于c - 为什么我不能按以下方式将 strcpy() 与 strtok() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com