Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Steelandrew
Нарушитель
1 / 4 / 0
Регистрация: 03.02.2015
Сообщений: 42
#1

Проверьте ерунда какая-то

04.06.2018, 14:10. Просмотров 128. Ответов 4
Метки нет (Все метки)

Не знаю что такое, но работает не корректно у меня этот кусочек кода почему-то:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    char *a;
int i;
int n;
 
    printf("Введите размер массива a: ");
    scanf("%d", &n);
 
    
 
    a = (int*)malloc(n * sizeof(char));
    
printf("Введите первую строку:\n");
for (i = 0; i<n; i++)
    {
        printf("a[%d] = ", i);
        scanf("%c", &a[i]);
    }
 
    
    _getch();
    return 0;
}
Добавлено через 31 минуту
если массив сделать типа int, то всё нормально
а с символьным не получается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2018, 14:10
Ответы с готовыми решениями:

Ерунда какая-то с С++
Помогите плиз прогу написал нажимаю скомпилировать он выдвёт оконце на долю...

Какая то ерунда скодировкой
вот ссылка на сайт, на страницах все отображается по русски, но все ссылки...

какая-то ерунда с мышкой
доброго времени суток, форумчане! Буквально месяц назад начались непонятки с...

Какая-то ерунда с ЦАП.
Всю голосу себе сломал. На STM32 Dyscovery плате все работает идеально. На...

Какая-то ерунда с наушниками
Наушники исправны. Без наушников во всех 3х системах звук есть. Подключаю...

4
Ovederax
157 / 111 / 81
Регистрация: 30.04.2017
Сообщений: 242
04.06.2018, 16:33 #2
При вводе в консоль данных, вы в программу получаете поток символов включая переводы строк('\n')
При считывании чисел типа int переводы строк, табуляции, пробелы сбрасываются и считываются только числа состоящие из цифр. При этом если вы вводите много чисел, то при считывании int пробелы будут игнорироваться.

Переменных char это не касается - в них легко могут попасть пробел, '\n', 't'.
Чтобы избежать этого вы можете первоначально считывать ввод в строку и потом проверять на корректность ввода
Либо использовать сброс данных потока ввода flush() после каждого ввода переменых чтобы избавится от '\n' и лишних данных. Так после ввода числа в строке 19 - у вас в потоке остался '\n' его нужно соответствующе обработать.
0
stake-k26
316 / 295 / 245
Регистрация: 25.04.2016
Сообщений: 873
04.06.2018, 17:02 #3
Steelandrew, а вы какие буквы с клавиатуры вводите? Если русские, то ничего удивительного. char безболезненно хранит только латинский алфавит, т.е. числа от 0 до 127, и то только в ASCII, если у вас терминал по умолчанию использует что-то посерьезнее, скажем utf-8, то там один символ может кодироваться не одним числом за раз, а сразу двумя, тремя... пятью. И тут уж простого char'а для хранения символов никак не хватит. Правда для этого правильнее будет использовать wchar_t.
0
Steelandrew
Нарушитель
1 / 4 / 0
Регистрация: 03.02.2015
Сообщений: 42
04.06.2018, 17:36  [ТС] #4
Ovederax, я в общем что хочу сделать:
- создать массив с динамической памятью (вручную введя на сколько символов надо массив, ну либо саморасширяющийся)
- с помощью функции gets() заполнить его символами вводом с клавы или ctrl+c в консоль
- вывести на экран с помощью puts()
буду очень благодарен, если напишите
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4424 / 2395 / 664
Регистрация: 18.10.2014
Сообщений: 4,051
06.06.2018, 06:01 #5
Цитата Сообщение от Steelandrew Посмотреть сообщение
C
1
2
3
char *a;
...
a = (int*)malloc(n * sizeof(char));
Что здесь делает приведение к типу int *???
0
06.06.2018, 06:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2018, 06:01

Какая то ерунда с кнопками на php
Ребята, у меня такая проблема, в программе несколько кнопок рассчитать, почему...

какая-то ерунда с функцией Дата()
Народ подскажите пожалуйста, у меня уже нет вариантов что делать!!! Ситуация...

какая то ерунда со шрифтами биос
Сначала упали дрова видюхи,после рестарта обнаружилось что в биосе половина...


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

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

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