Vous avez un comportement non défini, parce que vous appelez strlen
avec un pointeur vers un tableau de caractères qui n'est pas un caractère nul terminée (c
). Vous devez passer des chaînes à zéro terminal pour que cela fonctionne. Ceci est un exemple, la fixation et que d'autres erreurs, et y compris les en-têtes nécessaires:
#include <iostream> // std:cout, std::endl
#include <cstring> // std::strlen
int main()
{
char a[10] ={'a','b','c','d','e'}; // OK, all remaining elements
// initialized to '\0'.
// Alternative: car a[10] = "abcde"
char c[] = {'q','t','y','t', '\0'}; // or char c[] = "qtyt";
std::cout << std::strlen(c) << std::endl;
std::cout << std::strlen(a) << std::endl;
}
1. #include 2. ajouter un terminateur NULL pour chaque chaîne –
SomethingSomething
Il vous manque des zéros de terminaison. –
Vous pouvez mieux faire 'char a [10] =" abcde ";' Il va assigner le terminateur pour vous – SomethingSomething