我正在用c编写一个程序来删除额外的空格,我已经完成了所有的工作但是当我编译时,输出中我想要的字符串没有出现,我认为问题在于main函数,我会告诉你我的代码:
#include <stdio.h>
#include <stdlib.h>
void eliminar_espacios(char oracion[100]) {
int i;
for(i=0;i!='\0';i++) {
if(oracion[i]==' ' && (oracion[i+1]==' ' || oracion[i+1]=='\0')) {
oracion[i]=oracion[i+1];
}
}
}
int contar_espacios(char oracion[100])
{
int i,numero_espacios=0;
for (i=0;oracion[i]!='\0';i++){
if (oracion[i]==' '&&oracion[i+1]==' '){
numero_espacios+=1;
}
}
return(numero_espacios);
}
int main(void){
char frase[100];
int num_espacios;
printf("Escribe aqui a frase:");
gets (frase);
num_espacios=contar_espacios(frase);
eliminar_espacios(frase);
printf("%s\n",frase);
printf("%d",num_espacios);
return 0;
}
答案 0 :(得分:2)
您的eliminar_espacios函数没有&#39;返回&#39;。 您还应该使用strcpy或strncopy在&#39; frase2&#39;中保存新字符串, 例如:
chdir()
答案 1 :(得分:0)
尝试:
strncpy(frase2, frase, 100);
frase2[99] = '\0';
eliminar_espacios(frase2);
num_espacios=contar_espacios(frase2);
编辑:如果你愿意,你可以完全摆脱frase2,只需用frase调用所有函数,不需要strcpy:
eliminar_espacios(frase);
num_espacios=contar_espacios(frase);
printf("%s\n",frase);
Edit2:修复您的eliminar_espacios()函数:
void eliminar_espacios(char oracion[100]) {
int i;
for(i=0;oracion[i]!='\0';i++) {
if(oracion[i]==' ' && (oracion[i+1]==' ' || oracion[i+1]=='\0')) {
oracion[i]=oracion[i+1];
}
}
}