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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tro9an
3 / 3 / 0
Регистрация: 30.11.2010
Сообщений: 65
Завершенные тесты: 1
#1

Неправильно работает функция gets( ) - C++

10.03.2014, 23:21. Просмотров 270. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
.....
char *str = new char[ 10 ];
 
gets( str );
 
printf( "%s", str );
 
.....
Если ввести больше 9 символов, то по идее, на принтэфе программа должна вылететь, или вывести иероглифы после 10 символа.

Я ввожу около 60 символов, все выводит абсолютно нормально без иероглифов и вылетов, но ввиду чуть побольше, около 100, программа вылетает.
Что за магия?

Работаю в Visual Studio 2010.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 23:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильно работает функция gets( ) (C++):

Неправильно работает функция - C++
void FreeTop( Tree *&tree ) { if( tree->d == NULL )delete tree; else FreeTop( tree->d ); } это моя функция освобождения...

Неправильно работает функция - C++
Проблема заключается в том, что в случае, если пользователь вводит числа от 1 до 9 все работает правильно, а если от 10 и далее, то...

Неправильно работает функция - C++
You are given natural number n. Calculate 12+22+...+n2. Example Input Output 2 5 Добавлено через 1 минуту #include <iostream>...

Неправильно работает функция - C++
Господа, написал следующий код, цель - заполнить имеющийся вектор структур данными из файла + вывести количество символа @ Проблема...

Функция scanf() неправильно работает - C++
#include <stdio.h> #include <conio.h> #include <math.h> int main() { unsigned char c1, c2; bool b=true; while (b==true)...

неправильно работает функция replace()? - C++
Нужно написать программу, которая заменяет в строке символ '/' на строку "". Ниже дан цикл, в котором это происходит. Но замена почему-то...

3
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2014, 00:10 #2
Выход за границу массива компилятор не отслеживает. Будет вылет в процессе выполнения или нет, зависит от того, куда забредёт код, выйдя за границу массива. То что иероглифы не выводит, так и не будет. Будет выводить введённую строку (до '\0').
1
tro9an
3 / 3 / 0
Регистрация: 30.11.2010
Сообщений: 65
Завершенные тесты: 1
11.03.2014, 14:45  [ТС] #3
Ещё вопрос:

C++
1
2
3
4
5
6
7
8
9
10
.....
 
char str[ 21 ];
 
gets( str );
 
if( strlen( str ) > 21)
 printf( "Error!" ); // здесь я отправлю пользователя на начало ввода
 
.....
Если я так сделаю, то пользователь будет вводить строку, пока не введёт правильно или гетс всё равно засунет символы куда не надо?
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2014, 16:54 #4
Цитата Сообщение от tro9an Посмотреть сообщение
или гетс всё равно засунет символы куда не надо?
Да. Есть другие функции, который больше чем нужно не введут. В С++ это, например, getline():
C++
1
2
char str[21];
cin.getline(str, 21);
1
11.03.2014, 16:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 16:54
Привет! Вот еще темы с ответами:

Неправильно работает функция CArray.Add() - C++
Вобщем вызываю CellAr.Add(DictCell("sda",823)) но в сам массив записывается объект созданный конструктором без параметров, хотя через...

Почему функция atanh работает неправильно? - C++
Задание http://content-15.foto.my.mail.ru/mail/megabayt_m/_answers/i-359.jpg Кусок кода for (double X = Xn; X <= Xk; X += dX) { ...

Неправильно работает функция string::find_last_of - C++
include <stdio.h> #include <string> using namespace std; int main () { string temp= "undefined reference to"; size_t...

Неправильно работает функция strcmp c русскими буквами - C++
Пытаюсь сравнить строку с литералом. void main() { setlocale(LC_ALL, "Rus"); string s1; cin >> s1; int k =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.