[英]Print a string char by char without spaces
在我的作業問題中,我的老師希望我們編寫一個程序,該程序將在新行上逐個字符地打印字符串,但會忽略空格並在同一行上打印重復的字符。 因此,例如按字符打印“Hello World”字符將返回
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 循環來忽略空格,但至於在同一行上打印重復的字母,我很難過。 另外,如果您想知道我為什么要使用指針,我們作業的前一部分是使用指針算術打印字符串的長度。 不確定在沒有指針的情況下重做它是否會更容易。
在循環while(*instring!='\0')
內,您必須有另一個循環來檢查當前字符之后的字符。 如果它是空格,您還必須跳過該字符。 例如:
while(*instring!='\0') {
if (isspace(*instring)) {
instring++;
} else {
printf("%c",*instring);
int i= 1;
while (*instring == *(instring+i)) {
printf("%c",*(instring+i));
i++;
}
printf("\n");
instring += i;
}
}
您可以有一個指向前一個字符的指針,並使用它來找出何時打印換行符。 此外,您需要在打印當前字符之前檢查空格。 喜歡:
#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;
}
Output:
H
e
ll
o
W
o
r
l
d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.