Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему scanf_s не заносит данные в массив? 
:(
    Опции темы
Niakita
  Дата 4.2.2013, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



День всем добрый.
Делаю упражнение из книги "Харви Дейтел, Пол Дейтел. КАК ПРОГРАММИРОВАТЬ НА C++"

Среда Visual Studio Express 2012 for Windows Desktop

Функция scanf - не работает, на неё компилятор ругается.
Использую ту, что он предлагает -  scanf_s, но она почему то не сохраняет в массив введенные значения.
Когда смотрю отладчиком, то на месте введенного значения в массиве стоит ноль (0).

В чём может быть причина?
Как это исправить?


Код

// SML.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <iomanip> 
#include<windows.h>

#include <stdio.h>   // библиотеки необходимые для работы atoi //
#include <stdlib.h>


using namespace std; // пространство имён для вызова функций //



int _tmain(int argc, _TCHAR* argv[])
{
int memory [100]; // Память Симплетрона //
int i=0;
char a[6];



SetConsoleCP(1251);        // Отображение кирилицы //      
SetConsoleOutputCP(1251);

cout << "*** Симплетрон приветствует вас! ***" << endl;
cout << "*** Пожалуйста, введите вашу программу, по одной команде ***" << endl;
cout << "*** (или слову данных) за раз. ***"<< endl;
cout << "*** Я буду выводить в качестве подсказки текущий адрес и знак вопроса (?). ***" << endl;
cout << "*** Введенное вами слово будет размещено по указанному адресу. ***" << endl;
cout << "*** Для прекращения ввода программы введите -99999. *** " << endl << endl;

while (memory[i-1] !=-99999)
{
//cout <<  setw(2) << setfill('0') << i << "? ";
//cin >> memory[i];
cout << endl;
scanf_s("%[+-1234567890]", a);
cout << "Вывод scanf_s: " << a[0] << endl;
i++;
}

memory[i-1] = 0; // убираем значение -99999 //

cout << "*** Загрузка программы завершена ***" << endl;
cout << "*** Начинаю выполнение программы ***" << endl;

system("pause"); 
    return 0;
}



PM MAIL   Вверх
xvr
Дата 4.2.2013, 12:53 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Во первых вы забыли спецификатор 's' в форматной строке
Во вторых вы забыли подать параметр длинны буфера с параметром (это все таки scanf_s, а не scanf)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.