J'essaye d'écrire un programme qui prend l'entrée de l'utilisateur deux fois, concatène alors le résultat, mais je me heurte à un problème.strcat ne se comporte pas comme souhaité
Mon résultat attendu serait:
What would you like your message to be? input
message received: input
What would you like your message to be? words
message received: words
new message: inputwords
Au lieu de cela, je reçois une réponse embrouillée.
sortie Received:
What would you like your message to be? input
message received: input
What would you like your second message to be? words
message received: words
new message: ??s?inputwords
Première question:
Comment puis-je concaténer ces deux chaînes correctement?
De plus:
Depuis que je suis seulement accepter 5 caractères d'entrée pour chaque message, comment pourrais-je aller sur déblayer les éléments restants dans le tampon entre ces appels fgets sans lire le reste dans la « poubelle » tableau?
Voici le code que je utilise:
#include <stdio.h>
#include <string.h>
int main() {
char message[6];
char garbage[9999];
char message2[6];
printf("\nWhat would you like your message to be? ");
fgets(message, 6, stdin);
printf("message received: %s\n", message);
fgets(garbage, 9999, stdin); //this is gross
printf("\nWhat would you like your second message to be? ");
fgets(message2, 6, stdin);
printf("message received: %s\n", message2);
fgets(garbage, 9999, stdin); //still gross
char newString[25];
strcat(newString, message);
strcat(newString, message2);
printf("new message: %s\n", newString);
return 0;
}
Note: Je suis conscient que je prendras la valeur de retour pour fgets, je suis parti que pour la brièveté.
'strcat' ajoute une chaîne à une autre. Mais vous l'avez appelé avec un tampon non initialisé pour l'argument. –