编写函数Squeeze(str,ch),删除字符串str中所出现的与ch相同的字符。解决思路

编写函数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'