J'ai déjà vu quelques questions ici à Stackoverflow, mais aucun d'entre eux n'a résolu mon problème ...
J'ai ce code en C: P>
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char str[] = "";
scanf("%[^\n]", str);
printf("Você digitou: %s\n", str);
system("pause");
}
4 Réponses :
Vous ne devez pas écraser une constante avec l'entrée de l'utilisateur. Remplacer char Str [] = "" " code> avec char * str = malloc (
Le tableau utiliser Vous pouvez également utiliser str code> ne peut contenir qu'un seul Char code> Compte tenu de son initialisation. L'appel à scanf () code> écrasera les limites Le str code> provoquant un comportement non défini, dans ce cas, corrompre la pile. Vous devez décider de la taille de l'ensemble du tableau code> STR CODE> doit être et limiter le nombre de caractères lire pour empêcher le dépassement de la mémoire tampon. scanf () code> Vous spécifiez le nombre maximum des caractères à lire: p> fgets () code> mais il faudrait supprimer le caractère de nouvelle ligne par la suite. p> p>
Vous ne faisant que allouer un octet pour stocker l'entrée. La ligne alloue des octets zéro pour le contenu de la chaîne et un octet pour son terminateur NULL. Au lieu de cela, faites quelque chose comme p> ou quelle que soit la longueur d'entrée maximale. P> p>
Cette réponse est pour tous ceux qui sont venus à C ++ de Java / C # ou d'autres langues modernes orientées objet modernes.
Pour moi, cette question s'est produite pour la raison suivante: p>
J'ai créé ma propre personnalisée C ++ classe. p>
myclass.cpp strong> p> class MyClass {
int64 propA, propB;
public:
void work();
};