我有打印字符串的问题

时间:2015-10-31 23:06:22

标签: c

我正在用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;
}

2 个答案:

答案 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];
        }
    }
}