在C语言中,如何只扫描半行输入?

在C语言中,如何只扫描半行输入?,c,C,简单的问题(我想),在C语言中,我可以使用以下命令扫描整行内容: fgets(line, MAX, input); printf("%s\n", line); 例如,在打印“请将我切成两半”的地方,我如何只打印“我切成两半”,包括空格。在扫描整行之前,您不知道中间的位置。但您可以扫描整行,然后只打印下半行,如下所示: printf("%s\n", line+strlen(line)/2); 上述代码就是这样工作的:strlen确定整个字符串(21)的长度,然后我们使用整数除法(10)将其一分

简单的问题(我想),在C语言中,我可以使用以下命令扫描整行内容:

fgets(line, MAX, input);
printf("%s\n", line);

例如,在打印“请将我切成两半”的地方,我如何只打印“我切成两半”,包括空格。

在扫描整行之前,您不知道中间的位置。但您可以扫描整行,然后只打印下半行,如下所示:

printf("%s\n", line+strlen(line)/2);
上述代码就是这样工作的:
strlen
确定整个字符串(21)的长度,然后我们使用整数除法(10)将其一分为二,将其添加到指向行开头的指针,并将结果传递给
printf
前半部分:

printf("%.*s\n", strlen(line) / 2, line);
或上半部分,但修改
数组:

line[strlen(line) / 2] = '\0';
printf("%s\n", line);
下半场:

printf("%s\n", line + strlen(line) / 2);

将整行扫描到字符数组中,然后从该字符数组中只提取所需的字符

您真正应该寻找的是:

检查功能

希望这有帮助。

strlen(line)应该给出行的长度,然后您可以使用该长度的一半的字符数组,在原始行上迭代多次,然后逐个字符复制


别忘了用“\0”结束新数组:)希望有效?

行是一个数组,因此您可以使用指针算法:

printf("%s\n", line + (strlen (line)/2));

您可以“移动”显示字符串的起点。

什么意义上的一半?字符串长度除以2?标记化字符串的后半部分被空格分隔符分割?您可以将该行作为缓冲区并放弃前半部分。感谢您的回复,我将其作为一个例子,并发现使用strlen可以将字符数减半。具体到我的需要,我只需要删掉第一个字。此外,我不需要代币,我需要整行、空格和第一个单词后的所有内容(不包括第一个单词后的空格)。我想您需要
strlen(line)/2
;)@罗鲁:这正是问题所要问的。