简单的问题(我认为),在C中,我能够使用以下方式扫描整行:
fgets(line, MAX, input);
printf("%s\n", line);
例如,它会打印“请把我切成两半”,我怎么只能把“我变成一半”,包括空格。
答案 0 :(得分:3)
在扫描整条线之前,您不知道中间位置。但你可以扫描整行,然后只打印下半部分,如下所示:
printf("%s\n", line+strlen(line)/2);
以上代码的工作原理如下:strlen
确定整个字符串的长度(21),然后我们使用整数除法(10)将其除以一半,将其添加到指向开头的指针line,并将结果传递给printf
。
答案 1 :(得分:3)
答案 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'结束新数组。 :)希望有用吗?