[英]Copying input to output without unnecessary Spaces in C
我正在尝试在 C 中编写一个程序,将其输入复制到它的 output 中,同时用一个空格替换一个或多个空格的每个字符串。 我的代码没有这样做,而是取走每个第二个字符。 这是我的代码:
#include <stdio.h>
main()
{
int c;
int lastc;
lastc = 0;
while(getchar() != EOF){
c = getchar();
if(c == 32 && lastc == 32)
;
else
putchar(c);
lastc = c;
}
}
您的循环应如下所示:
while((c = getchar()) != EOF){
if(c == 32 && lastc == 32)
;
else
putchar(c);
lastc = c;
}
在您的版本中,您在检查 while 循环的条件时使用 getchar 获得一个 char,然后作为下一步,您再次使用 getchar 获得一个 char。 因此,您的代码中未使用第一个。 因此,它正在夺走每个第二个字符。
继续在 while 循环中运行,直到获得非空格字符并在退出后仅打印一个空格。
int main()
{
int c;
bool space=false;
while ((c=getchar()) != EOF) {
while (isspace(c)) {
space = true;
c = getchar();
}
if (space) {
putchar(' ');
space = false;
}
putchar(c);
}
return 0;
}
我使用fgets()
function 从输入(即标准输入)获取字符串并存储在滚动字符串中。
然后,您必须实现一种分析字符串以在其中查找空格的方法。
当您找到第一个空格时,如果您面对另一个空格,请增加索引。
这是代码。
代码
#include <stdio.h>
int main(void){
char scroll[100];// = "kang c heng junga";
fgets(scroll, 100, stdin);
printf ("Full name: %s\n", scroll);
int flag = 0;
int i=0;
while (scroll[i] != '\0')
{
if (scroll[i] == ' ' )
flag=1;//first space find
printf("%c",scroll[i]);
if (flag==0){
i++;
}else {
while(scroll[i]==' ')
i++;
flag=0;
}
}
return 0;
}
样本输入: Salam be shoma doostane aziz
程序 output : Salam be shoma doostane aziz
[编辑]
使用新字符串st
保存已消除空间的字符串,打印为 output。
此代码也适用于波斯字符串。
char scroll[100]={0};// = "kang c heng junga";
printf("Enter a string: ");
fgets(scroll, 100, stdin);
printf ("Original string: %s\n", scroll);
char st[100]={0};
int flag = 0;
int i=0;
int j=0;
while (scroll[i] != '\0')
{
if (scroll[i] == ' ' )
flag=1;//first space find
st[j]=scroll[i];
j++;
if (flag==0){
i++;
}else {
while(scroll[i]==' ')
i++;
flag=0;
}
}
printf("Eliminate Spaces: %s", st);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.