2017-09-11 4 views
-3

Le code fonctionne bien alors que la longueur du tableau > 1 mais quand je retourne à 1, il donne quelques erreurs dans stdio.h *Making array (char) 1 donne erreur sur stdio.h

Voici mon code :

#include "stdafx.h" 
#include <iostream> 
using namespace std; 

int main() 
{ 
    char sentence[2]; 

    cout << "Enter your sentences : "; 
    gets_s(sentence); 

    cout << sentence << endl; 

    system("PAUSE"); 
    return 0; 
} 

est ici l'erreur dans stdio.h:

__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(
    char*, gets_s, 
    char, _Buffer) 
+1

Ce n'est pas un message d'erreur, veuillez donner la sortie exacte du compilateur. –

+0

Il n'y a pas de message d'erreur, c'est juste ne pas travailler @RichardCritten –

+0

Ne pas utiliser, c'est obsolète: https://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it- should-not-be-used – R2RT

Répondre

1

Il y a des chances que vous essayez d'obtenir la chaîne littérale qui est encore plus de 2 caractères ne pas être abl e pour l'insérer dans votre tampon:

char sentence[2]; 

Augmenter la taille du tampon à quelque chose de plus acceptable:

char sentence[255]; 

Cela étant dit en C++, vous devriez préférer std::string à tableau de caractères et std::getline-gets_s.

+0

Mais pourquoi 1 ne fonctionne pas le mot «a» est 1 caractère de char? –

+0

... jusqu'à ce que quelqu'un entre une phrase de 255 caractères ou plus. Retour à la case 1. – Maciek

+0

@SefaKalkan Non, en C, vous devez ajouter un terminateur NULL. "a" -> {'a', '\ 0'}. Utilisez simplement des conteneurs C++ appropriés comme std :: string. –