Софтуерно Инженерство
Loading...
agogo avatar agogo 12 Точки

Scanf и четене на низ - продължение ... :)

Здравейте на всички!

Искам да ви помоля за коментар върху следните мои терзания:

char str[80];
int n;
scanf("%79[a-zA-Z ]%n",str,&n); 

Така посочения код, би трябвало, да прочете цял стринг(само буквите) с интервалите в str. Отделно в n ще се запишат брой прочетени символа. При n > 79, ще използвам fseek() за изчистване на буфера. Идеята за всичко това е, че:

gets(str);    // е стандартна функция, която обаче не следи за границите на str.

Смятате ли, че използвайки scanf() по посочения начин, ще има работеща, коректна проверка за размер на str и въведени символи?

Благодаря, предварително!

Тагове:
0
C Programming
fristgerb avatar fristgerb 50 Точки

Може да ползваш fgets:

char *fgets(char *s, int size, FILE *stream);

Пример:

char buffer[80];
fgets (buffer, sizeof(buffer), stdin);  // stdin is part of <stdio.h>

Ако искаш да правиш специални проверки за това което е въведено, може сам да ги правиш и да изнесеш всичко във функция.

1
07/04/2016 15:31:21
agogo avatar agogo 12 Точки

Благодаря!

Точно си разбрал - искам да правя проверка и филтриране на въвеждането. Всичко това ще си е в една отделна функция. Естествено, няма да е гъвкава и ще бъде по-специализирана, но за идеята става :)

 

1
12/04/2016 11:11:17