Donc, j'essaie de supprimer les espaces vides à partir d'une entrée de sting par l'utilisateur. J'ai déjà une option où le programme compte les voyelles et inverse la chaîne. Celui où j'ai besoin d'aide commence par // espaços. Ce que j'ai fait était quelque chose comme: si la chaîne "palavra", l'original, a un espace (' '
) dans n'importe quelle position, la nouvelle chaîne sans espace aura le caractère suivant de la chaîne "palavra" dans cette position:Effacer les espaces vides entre les chaînes dans C
/*palavra = " o l a _ o l a"
[0][1][2][3][4][5][6]
palavra3 = "o l a o l a"
[0][1][2][3][4][5]*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void) {
char palavra[10];
char palavra2[10];
char palavra3[10];
int i;
int vogais = 0;
int j;
int k;
int espaco = 0;
printf("Introduza uma string: \n");
scanf("%[^\n]", palavra);
//vogais
for (i = 0; palavra[i] != '\0'; i++) {
if (palavra[i] == 'a' || palavra[i] == 'e' || palavra[i] == 'i' ||
palavra[i] == 'o' || palavra[i] == 'u' ||
palavra[i] == 'A' || palavra[i] == 'E' || palavra[i] == 'I' ||
palavra[i] == 'O' || palavra[i] == 'U')
vogais ++;
// else
// printf("");
}
printf("Vogais: %i", vogais);
//invertida
for (i = 0; palavra[i] != '\0'; i++);
{
k = i-1;
}
for (j = 0; j <= i-1; j++) {
palavra2[j] = palavra[k];
k--;
}
printf("\nString invertida: %s", palavra2);
//espaços
for (i = 0; palavra[i]; i++) {
if (palavra[i] == ' ')
palavra3[i] = palavra[i + 1];
//espaco++;
}
// printf("\nNumero de espacos: %i", espaco);
printf("\nString sem espacos: %s", palavra3);
}
double possible de [enlever toutes les occurences d'un caractère dans une chaîne C - Exemple nécessaire] (http://stackoverflow.com/questions/4161822/remove-all-occurences-of-a-character-in-c-string-example-needed) –
Curieux, qui ou quel texte a suggéré d'utiliser 'scanf ("% [^ \ n] ", palavra); quelque chose comme 'fgets (palavra, sizeof palavra, stdin); – chux
J'ai essayé les deux, j'ai obtenu le même résultat. Im apprendre C à l'école, l'a obtenu à partir d'un pdf de l'enseignant. –