如果我输入的是:功能区 输出将是:
rn
rion
ribbon
或者我的输入是:harry
hy
hary
harry
它应该看起来像一个文本动画,文字应该逐个出现(前面和后面的字母应该首先出现)。
这是我的代码,但它似乎没有用,因为它有一个wront输出。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main () {
char input[10];
int front, back;
int n; //counter
n = strlen(input);
printf ("input\n");
fgets (input, sizeof (input), stdin);
for (front=0,back=n-1; front<=((n-1)/2)||back>=(((n-1)/2)+1);front++,back--) {
if (front==0||back&&(n-1)) {
printf ("%c",input[front]);
printf ("%c", input[back]);
front++;
back--;
usleep (500000);
}
else {
if (front<=((n-1)/2)||back>=(((n-1)/2)+1)) {
front++;
back --;
}
else if (front==n) {
printf ("%c\n", input[front]);
printf ("%c\n", input[back]);
}
}
}
return 0;
}
答案 0 :(得分:0)
有一个主要问题:您在接收任何输入之前尝试确定输入的长度。
所以切换这样的行:
printf ("input\n");
fgets (input, sizeof (input), stdin);
n = strlen(input);
然后你的for循环......为什么这么重的测试,不会
for ( front = 0, back = n-1; front < back; ++front, --back)
足够吗?
最后:代码的其余部分。请再考虑一下。你想要:
front
您的代码对此无效。但我们不是来解决你的功课;)
最后一个提示:有两种不同类型的停止条件,它们取决于您的输入长度是偶数还是奇数。 (我建议的测试应该可以赶上两个,然后)。