在C中,如何只扫描一行输入的一半?

时间:2012-02-05 17:16:45

标签: c

简单的问题(我认为),在C中,我能够使用以下方式扫描整行:

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

例如,它会打印“请把我切成两半”,我怎么只能把“我变成一半”,包括空格。

5 个答案:

答案 0 :(得分:3)

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

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

以上代码的工作原理如下:strlen确定整个字符串的长度(21),然后我们使用整数除法(10)将其除以一半,将其添加到指向开头的指针line,并将结果传递给printf

答案 1 :(得分:3)

您将整行扫描到char数组中,然后从该char数组中仅取出所需的字符。

您应该真正寻找的是:Parsing a string

检查strtok功能。

希望这有帮助。

答案 2 :(得分:1)

上半场:

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

或上半部分,但修改line数组:

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

下半场:

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

strlen(line)应该给你这行的长度,然后你可以使用一半长度的char数组,多次遍历原始行,并按字符复制字符?

不要忘记用'\ 0'结束新数组。 :)希望有用吗?