编写函数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;
}
------解决方案--------------------
#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'