Jak przypisać wartość z scanf_s do tablicy? Próbuję tak, ale po wprowadzeniu słowa wywala błąd w konsoli.
char slowo[4];
printf("Podaj slowo: ");
scanf_s("%s", &slowo);
Jak przypisać wartość z scanf_s do tablicy? Próbuję tak, ale po wprowadzeniu słowa wywala błąd w konsoli.
char slowo[4];
printf("Podaj slowo: ");
scanf_s("%s", &slowo);
Zrób to w ten sposób:
char slowo[4];
printf("Podaj slowo: ");
scanf_s("%s", slowo);
atmal napisał(a):
Zrób to w ten sposób:
char slowo[4]; printf("Podaj slowo: "); scanf_s("%s", slowo);
Ten znak niczego nie zmienia, dalej jest błąd.
Jesteś pewien, że wprowadzasz tam prawidłową liczbę znaków? Taką, która mieści się w rozmiarze podanym przez Ciebie?
Do tego co napisał @Bartosz36 dodałbym jeszcze że wprowadzone słowo może mieć maksymalnie 3 znaki - 4 znak jest dla \0
.
Przydałoby się również abyś napisał coś więcej o błędzie który się pojawia.
tak aby rozwinąć odp atmala dot. znaków i \0
https://stackoverflow.com/questions/4711449/what-does-the-0-symbol-mean-in-a-c-string - 1 komentarz
Problem wydaje się leżeć w samej funkcji scanf_s()
, która najwidoczniej nie ogarnia formatu %s
bez doprecyzowania długości podanego łańcucha.
Autorze: Spróbuj tego:
char slowo[ 4 ] = { 0 };
printf( "Podaj slowo: " );
scanf_s( "%s", slowo, strlen(slowo) );
char slowo[4];
printf("Podaj slowo: ");
scanf_s("%s", slowo, strlen(slowo));
To już prawie działa. Program się wykonuje, trzeba wcisnąć dowolny klawisz i wtedy wyskakuje okienko DEBUG ERROR.
Teraz to już musisz wrzucić cały swój kod, ponieważ w moim przypadku:
#include <iostream>
constexpr int WORD_LENGTH = 4;
int main( void )
{
char slowo[ WORD_LENGTH ] = { 0 };
printf( "Podaj slowo: " );
scanf_s( "%s", slowo, WORD_LENGTH );
std::cout << "The word is: " << slowo << std::endl;
std::cin.get();
return 0;
}
To działa bez zarzutu...
Różnice, jakie możesz tu zobaczyć to:
linijka 7: zainicjalizowałem całą tablicę zerami.
linijka 9: ze względu na linijkę 7 podałem bezpośrednio rozmiar tablicy. Gdybym zostawił strlen()
rozmiar byłby policzony jako 0 i nic bym do tablicy nie zapisał.
Sprawdź czy to u Ciebie działa, a potem wrzuć swój kod, lub wykorzystaj ten, który podałem.