squeeze(s1, s2),将字符串s1中任何以字符串s2中字符匹配的字符都删掉
#include <stdio.h>
void squeeze(char s1[], char s2[])
{
int i, j, k;
for (i = k = 0; s1[i] != '\0'; i++){
for (j = 0; s2[j] != '\0' && s2[j] != s1[j]; j++)
;
if (s2[j] == '\0')
s1[k++] = s1[i];
}
s1[k] = '\0';
}
main()
{
char s1[], s2[];
s1 = "1234567";
s2 = "345";
squeeze(s1, s2);
printf ("%s, %s" s1, s2);
}
出错显示
squeeze_12.c: In function ‘main’:
squeeze_12.c:18:7: error: array size missing in ‘s1’
squeeze_12.c:18:13: error: array size missing in ‘s2’
squeeze_12.c:19:5: error: incompatible types when assigning to type ‘char[1]’ from type ‘char *’
squeeze_12.c:20:5: error: incompatible types when assigning to type ‘char[1]’ from type ‘char *’
squeeze_12.c:22:19: error: expected ‘)’ before ‘s1’
squeeze_12.c:22:19: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat]
squeeze_12.c:22:19: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
void squeeze(char s1[], char s2[]);
int main(void)
{
char s1[] = "abcdef";
char s2[] = "bdf";
squeeze(s1, s2);
printf("%s\n", s1);
return EXIT_SUCCESS;
}
/* squeeze: delete all characters from s1 that match any in s2 */
void squeeze(char s1[], char s2[])
{
int i, j, k;
int instr2;
for (i = j = 0; s1[i] != '\0'; i++) {
instr2 = FALSE;
for (k = 0; s2[k] != '\0' && !instr2; k++)
if (s2[k] == s1[i])
instr2 = TRUE;
if (!instr2)
s1[j++] = s1[i];
}
s1[j] = '\0';
}