【发布时间】:2021-10-29 09:21:11
【问题描述】:
这是我想出的代码:
#include<stdio.h>
#include<string.h>
void delit(char *s, int i) {
int n = 0;
for (int j = i; j < strlen(s) - 1; j++) {
s[j] = s[j + 1];
}
printf("%s", s);
}
int main() {
char s[100];
printf("gimme string with less than 100 chars");
gets(s);
int l = strlen(s);
for (int i = 0; i <= l - 2; i++) {
if (s[i] == s[i + 1] && s[i] == ' ') {
delit(char *s, int i);
}
}
printf("after processing %s", s);
}
这不起作用并显示 2 个错误:
//函数'delit'的参数太少{delit(char *s, int i);}
//ction 'main':tempCodeRunnerFile.c:20:16: error: 'char'之前的预期表达式{delit(char *s, int i);}
请指教。
【问题讨论】:
-
{delit(char *s, int i);}这不是你在 C 中调用函数的方式。只需传递变量,而不是它们的类型:{delit(s, i);} -
你把类型放在你的函数调用中,你只在定义函数的时候把那些放在,
delit(s,i) -
永远不要*曾经使用
gets! It's so dangerous 已从 C 语言中删除。使用例如fgets代替。 -
@Samuel 好的,我修复了它,它正在工作,但只适用于两个空格。例如,如果有 3 个空格,它会返回 2 个空格而不是 1 个空格??
-
@yano 好的,我修复了它,它正在工作,但只适用于两个空格。例如,如果有 3 个空格,它会返回 2 个空格而不是 1 个空格??
标签: c duplicates char c-strings function-definition