用c语言编写程序删除字符串中间的'*'号

1.如字符串为:*****ABC*****SHDFN****
运行后结果为:*****ABCSHDFN****
2.不能使用C库函数

已通过编译,而且除了printf()和scanf()之外,什么库函数都没用。
void main(void)
{ char *str,i;
do
{ printf("Please input:\n");
scanf("%s",str);
for(i=0;str[i]!='\0';i++);
}while(i==0);
i=fun(str,i-1); /*自定义的函数,负责删除'*'*/
printf("%s\n",str+i);/*从第i位(即第一个不是'*'的那一位)开始显示*/
}
int fun(char *str,int j)
{ int i,f1=0,f2=0; /*f1与f2是标志变量,当他俩都为1时,则以删除完了*/
for(i=0;i!=j&&f1*f2==0;)
{ if(str[i]=='*') i++; /*如果是'*',下标后移,否则将f1置1*/
else f1=1;
if(str[j]=='*') j--;/*如果是'*',下标前移.否则f2置1,并将后一位置'\0'*/
else { str[j+1]='\0';f2=1; }
}
return i;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-30

#include <stdio.h>

int main(){

    char s[] = "**AB***CDE******FG*****HI***";

    char r[] ="";

    int length = sizeof(s) / sizeof(char); 

    printf("The Length is '%d'.\n",length);

    int j =0;

    for (int i = 0; i < length; ++i)

    {

          if (s[i] != '*')

          {

              r[j] = s[i];  

              j++;

          }

    }

    printf("The result is '%s'.\n",r);

}

第2个回答  2021-04-27
#include<stdio.h>
int main()
{
int i=0, j = 0;
char str1[100], str2[100];
scanf_s("%s", str1,100);
while ( str1[i] != '\0')
{
if (str1[i] != '*')
{
str2[j] = str1[i];
j++;
}
i++;

}
str2[j] = '\0';
printf("%s\n", str2);
return 0;
}
其中scan_s那一列中的 _s 和 ,100 是由于在visual studio 2019上编写的,其他编译器可能不一定需要,去掉即可
第3个回答  2009-04-04
给,已经编译运行确认:
#include<conio.h>
#include<stdio.h>

#define N 50 //定义字符串最长为50个字符

int main()
{
int length=0,head,tail;
int i,j;
char str[N]={NULL};
char temp;

printf("Please input a string: \n");
gets(str);

while(str[length++]);//统计字符串长度

for(head=0;head<length;head++) //记录从头起第一个不为*的成员的位置
if(str[head]!='*') break;

length--;

for(tail=length-1;tail>=head;tail--)//记录从尾起第一个不为*的成员的位置
if(str[tail]!='*') break;

for(i=head;;)
{
if(i>=tail) break; //如果中间值都已经检测完毕,退出循环
if(str[i]=='*') //遇到中间的*
{
for(j=i;str[j]!='\0';j++)//删除*
{
str[j]=str[j+1];
}
tail--;//尾计数相应的减一
}
else i++;//检测下一个
}

printf("%s",str);

getch();
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网