#include <stdio.h>
#include <stdlib.h>
void squeeze(char s[], int c);
int main(){
char x[]="cats";
int y =10;
squeeze(x,y);
printf("%s %dn", x, y);
return 0;
}
void squeeze (char s[], int c){
int i,j;
for(i = j=0; s[i]!=' '; i++)
if(s[i] !=c)
s[j++]=s[i];
s[j] = ' ';
}
这个函数是";从s中删除所有c";。我不知道如何让它发挥作用。此函数的输出为cats, 10
,没有任何变化。我是不是做错了什么?
函数工作正常。
问题是字符串cats
不包含字符10
,因此您不应该期望发生更改。在从ASCII派生的代码集中,字符10
是换行符'n'
。创建字符串char z[] = "Onenlinenornmanyn";
并调用sqeeze(z, 'n');
,在之前和之后打印z
#include <stdio.h>
void squeeze(char s[], int c);
int main(void)
{
char x[] = "cats";
int y = 10;
printf("before: [%s] %dn", x, y);
squeeze(x, y);
printf("after: [%s] %dn", x, y);
printf("%s %dn", x, y);
char z[] = "Onenlinenornmanyn";
printf("before: [%s]n", z);
squeeze(z, 'n');
printf("after: [%s]n", z);
return 0;
}
void squeeze(char s[], int c)
{
int i, j;
for (i = j = 0; s[i] != ' '; i++)
if (s[i] != c)
s[j++] = s[i];
s[j] = ' ';
}
其输出为:
before: [cats] 10
after: [cats] 10
cats 10
before: [One
line
or
many
]
after: [Onelineormany]