读书人

编写函数Squeeze(str,ch)删除字符串

发布时间: 2012-05-15 14:35:29 作者: rapoo

编写函数Squeeze(str,ch),删除字符串str中所出现的与ch相同的字符。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Squeeze(char *str , char str[80], char ch )
{
void char str[80], char ch;
FILE*fp=fopen("data.in", "r"); //.........
if(fp==NULL){
printf("ERROR1\n");
return 1;
}
if(ch=fgetc(fp)==EOF ){ //.....ch
printf("ERROR2\n");
fclose(fp); //....
return 2;
}
lenth=strlen((str,80,fp)); //..
if(!(0<lenth&&lenth<80)){ //fgets....0
printf("Error 2\n");
fclose(fp); //....
return 2;
}
char *Squeeze(char *str, char ch)
{
char *p, *q;
for (p = q = str; *p != '\0';)
{
if (*p == ch)
++p;
else
*q++ = *p++;
}
*q = '\0';
return str;
}



[解决办法]

C/C++ code
  *(q+1) = '\0';  return str;
[解决办法]
我的写错了,你的没问题啊,我验证过了的
[解决办法]
lz想做什么?删除的部分貌似没什么问题吧?

文件里面是想做什么?
[解决办法]
C/C++ code
char *Squeeze(char *str, char ch){  char *p, *q;  for (p = q = str; *p != '\0';)  {  if (*p == ch)  ++p;  else  *q++ = *p++;  }  *q = '\0';  return str;}
[解决办法]
C/C++ code
char *Squeeze(char *str, char ch)
{
char *p, *q;
for (p = q = str; *p != '\0';)
{
if (*p == ch)
++p;
else
*q++ = *p++;
}
*q = '\0';
return str;
}



没有问题
[解决办法]
char *Squeeze(char *str, char ch)
{
char *c;
while(*str!='\0')
{

if(*str==ch)
{
c=str;
while(*str!='\0')
{
*str=*(str+1);
str++;
}
str=c;
}
}
str++;
}

缺点是排完侯可能有多个'\0'

读书人网 >C语言

热点推荐