在我的作业问题中,我的讲师希望我们编写一个程序,该程序将在新行上逐字符打印一个字符串字符,但是将忽略空格,并在同一行上打印重复字符。例如,以char打印“ Hello World” char将返回
H
e
ll
o
W
o
r
l
d
我已经能够获取代码来逐个字符地打印字符串,但是我无法在同一行上打印重复项或忽略空格。我看过其他一些类似的问题,这似乎不是一件容易的事。
#include <stdio.h>
void print_string(const char instring[]);
int main(void)
{
print_string("Hello World");
return 0;
}
void print_string(const char *instring)
{
while(*instring!='\0')
{
printf("%c\n",*instring++);
}
return;
}
这样会返回每个字母
H
e
l
l
o
W
o
r
l
d
但不是所需的安排。我曾考虑过实现一个do while循环来忽略空格,但是对于在同一行上打印重复的字母,我感到很困惑。另外,如果您想知道为什么我要使用指针,那么我们功课的前一部分就是使用指针算法打印字符串的长度。不知道是否在没有指针的情况下进行修改会更容易。
答案 0 :(得分:1)
在循环@akryum/vue-cli-plugin-ssr
中,您必须具有另一个循环,用于检查当前字符之后的字符。如果字符是空格,则还必须跳过该字符。例如:
vue-apollo/ssr
答案 1 :(得分:1)
您可以拥有一个指向上一个字符的指针,并使用该指针来查找何时打印换行符。此外,您需要在打印当前字符之前检查空格。喜欢:
#include <stdio.h>
void print_string(const char instring[]);
int main(void)
{
print_string("Hello World");
return 0;
}
void print_string(const char *instring)
{
const char *p = NULL;
while(*instring!='\0')
{
if (p != NULL && *instring != *p && *instring != ' ') printf("\n");
if (*instring != ' ') printf("%c",*instring);
p = instring++;
}
printf("\n");
return;
}
输出:
H
e
ll
o
W
o
r
l
d