[c] Wyświetlanie danej ilości znaków.

Draqun

Użytkownik
Dołączył
Sierpień 27, 2007
Posty
67
Kod:
#include<stdio.h>
#include<string.h>

int main()
{
    char imie[10];
    printf("Podaj swoje imie \n");
    scanf("%s", imie);
    strlen (imie);
    printf("Masz na imie %s\n");
    printf("Co to za [cenzura] imie ");
    printf(imie);
    return 0;
}

Powyższy program chyba kazdy lamer zrozumie, jednak mam problem, ponieważ po wpisaniu więcej niż 10 znaków program "wykrzacza się". Pamietam, ze jest komenda (bodajrze strlen), która powoduje przycięcie do 10 znaków i dalsze działanie programu. Jak to można zrobić?
 

RobertG

Użytkownik
Dołączył
Styczeń 3, 2007
Posty
391
jedna z opcji:

Kod:
#include<stdio.h>
#include<string.h>

int main()
{
    char imie[10];
    printf("Podaj swoje imie \n");
    scanf("%10s", imie);
    strlen (imie);
    printf("Masz na imie %s\n");
    printf("Co to za [cenzura] imie ");
    printf(imie);
    return 0;
}


Kwestia tego, czy takie 'przycięte' informacje mają sens i są przydatne. Przykładowo mamy aplikację w C, która loguje się do aplikacji www (takie coś jak webserwis), user zakłada sobie konto przez formularz www, a później w tej aplikacji chce się zalogować. Zakłada sobie login 20 znakowy. Teraz jak mu go przytniemy to on się nie zaloguje bo login będzie błedny. Można by zakończyć działanie aplikacji tutaj albo spróbować w locie powiększyć bufor (co jest już inną historią). W skrócie: takie przycięcie nawet jeśli poprawnie zakodowane wciąż może rozsypać aplikacje w trakcie użytkowania. Przykład pisałem na szybko można by sie do niego przyczepić
smile.gif
 

Draqun

Użytkownik
Dołączył
Sierpień 27, 2007
Posty
67
Mi to tak naprawde ma służyc do tego, aby proste programy jakie bedę mial na wejściowkę nie wysypywały się juz przy pobraniu pierwszego ciągu znaków. Dzięki wielkie.
 
Do góry Bottom