Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сосчитать количество строк в символьном массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пользователь вводит с клавиатуры число, необходимо перевернуть его (число) и вывести на экран. http://www.cyberforum.ru/cpp-beginners/thread20536.html
Сегодняшнее домашнее задание основано именно на этом принципе, однако, вам придется использовать еще и циклы. 1. Пользователь вводит с клавиатуры число - программа должна показать сколько в данном...
C++ Структуры данных и двоичные файлы Доброго времени суток, уважаемые пользователи. Помогите, пожалуйста, с решением задачи: Дан файл file, содержащий сведения о кубиках: длина ребра, цвет, материал. Найти количество кубиков данного... http://www.cyberforum.ru/cpp-beginners/thread20521.html
C++ Измерение скорости копирование данных в оперативной памяти!
Там вроде надо два массива содавать я пробовал ничего не вышло((
Поменять стандартный тип данных C++
Народ, помогите с вопросом. В С++ стандартным типом данных является int. Как поменять это на что-то другое. Например, что бы переменная определенная без типа была char: a = 5; // sizeof(a) == 1
C++ Метод удаления по ключу http://www.cyberforum.ru/cpp-beginners/thread20512.html
ребята помогите пожалуста! нужно что то исправить.. ни как не работает метод удаления по ключу.. у меня условие следующее: нужно удалить все марки новее выбраного возраста.(его вводим с...
C++ Класс множество Нужно написать класс множество с конструкторами, деструкторами, операторами. Так вот возник вопрос...как понимать тип данных множество?? Это обычный массив в котором даннеы не могут повторяться,... подробнее

Показать сообщение отдельно
pavlinux
3 / 3 / 0
Регистрация: 09.01.2009
Сообщений: 41
11.01.2009, 01:12
Цитата Сообщение от accept Посмотреть сообщение
вместо gets(*s)

Код
    fgets((*s)[i], 30-1, stdin);


Ага, щаз.... (*s)[i] - это int
gets пишет за пределы строки
(сотрёт переменные или вызовы функций которые дальше идут, если ей передадут строку длиннее, чем может поместить символьный массив в который она записывает данные со станартного потока ввода)
Не слушай бяку, плохого на советуют....

gets считает сколько сможет, зависит от операционки, а запишет,
именно сколько выделили malloc_ом, и всё равно её НЕХОРШО ИСПОЛЬЗОВАТЬ,
но по другим причинам.

C++
1
2
3
4
5
6
    char **s = (char**) malloc(n * sizeof (char *));
 
    for (i = 0; i < n; i++) {        
        *(s+i) = (char *) malloc(30*sizeof (char));
        fgets(*(s+i), 30, stdin);
    }


Добавлено через 2 минуты 27 секунд
Вот, проверяйте ...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main(void) {
 
    int i;
    int n = 6;
 
    char **s = (char**) malloc(n * sizeof (char *));
 
    for (i = 0; i < n; i++) {        
        *(s+i) = (char *) malloc(30*sizeof (char));
        fgets(*(s+i), 30, stdin);
    }
 
    for (i = 0; i < n; i++) {
        printf("%s\n", *s++);
        
    }
 
    free(*s);
    s = NULL;
    return (EXIT_SUCCESS);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru