Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 6

НЕ работает ввод через строки через gets()

06.12.2019, 21:08. Показов 3596. Ответов 9

Студворк — интернет-сервис помощи студентам
Помогите с ошибкой
Не могу понять в чем дело...

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
/*  Задана строка символов. Вычислить, сколько раз повторяется наперед заданный символ a.*/
 
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <string.h>
#define SZ 80
int main()
{
    setlocale(LC_ALL,"rus");
    char arr[80];
    char sym;
    int qnt=0;
 
    printf("Хочешь узнать сколько символов N в твоем предложении?");
    printf("\nТак введи сначала символ, а потом уже предложение!\n");
    printf("-> ");
    scanf("%c",&sym);
    printf("\n-> ");
    gets(arr); //почему-то ввод строки не получается
    printf("Считаю...\n");
    for(int i=0; i<strlen(arr); ++i)
    {
        if(sym==arr[i]) qnt++;
    }
    if(qnt!=0) printf("Я нашёл %d похожих символов!\n", qnt);
    else printf("Таких символов я не нашёл...\n");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2019, 21:08
Ответы с готовыми решениями:

Не работает ввод имени файла через fget и открытие через fopen
Уже все перепробовал и в гугле пару часов посидел. Но никак не пойму где проблема допустим в этом коде : char filename; char *p; ...

Не работает интернет ни через выделенную сеть ни через модем, хотя работает через wifi
Не работает интернет ни через выделенную сеть ни через USB модем, хотя работает через wifi. Бьюсь уже несколько дней пока добиться...

Ввод массивов через множество textBox, подсчёт суммы, и вывод через listBox. Ошибка при вводе через textBox
Создал я кучу текст боксов, там происходит ввод каждого элемента массива. И вывод через листбокс По идее должен...

9
 Аватар для analogov net
2524 / 1123 / 493
Регистрация: 17.11.2018
Сообщений: 2,832
06.12.2019, 22:17
Gemoglobinchik, а если так:
C
1
gets_s( arr );
или так:
C
1
fgets( arr, 80, stdin );
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
06.12.2019, 22:52
Лучший ответ Сообщение было отмечено Gemoglobinchik как решение

Решение

А как вы вводите? Вводите символ и нажимаете Enter? Поздравляю. Программа читает символ, а затем читает пустую строку, присоединяя к ней символ \n

Добавлено через 1 минуту
Если бы вы введи символ, а за ним встык строку и нажали Enter, тогда бы получилось.

Добавлено через 5 минут
Вот так можно
C
1
2
3
4
5
6
    printf("-> ");
    gets(arr);
    sym = arr[0];
    printf("\n-> ");
    gets(arr); //почему-то ввод строки не получается
    printf("%s\n",arr);
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
06.12.2019, 22:53
Цитата Сообщение от Gemoglobinchik Посмотреть сообщение
Не могу понять в чем дело...
В языке С уже давно нет никакой функции gets.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
06.12.2019, 22:56
Еще вариант: после ввода символа продолжить чтение символов до тех пор, пока не прочитаете символ '\n'.
0
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 6
06.12.2019, 23:48  [ТС]
[quote="palva;14069354"]Если бы вы введи символ, а за ним встык строку и нажали Enter, тогда бы
Цитата Сообщение от analogov net Посмотреть сообщение
gets_s( arr );
Не, это не работает

Добавлено через 24 секунды
Цитата Сообщение от analogov net Посмотреть сообщение
fgets( arr, 80, stdin );
Это тоже не работает

Добавлено через 1 минуту
Цитата Сообщение от palva Посмотреть сообщение
Если бы вы введи символ, а за ним встык строку и нажали Enter, тогда бы получилось.
Цитата Сообщение от palva Посмотреть сообщение
Вот так можно
Спасибо, выручили

Добавлено через 1 минуту
Цитата Сообщение от palva Посмотреть сообщение
А как вы вводите? Вводите символ и нажимаете Enter? Поздравляю. Программа читает символ, а затем читает пустую строку, присоединяя к ней символ \n
Спасибо за объяснение!
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
07.12.2019, 00:48
Цитата Сообщение от analogov net Посмотреть сообщение
Gemoglobinchik, а если так:
C
1
gets_s( arr );
??? Функция gets_s имеет два параметра, а не один.

Цитата Сообщение от Gemoglobinchik Посмотреть сообщение
C
1
fgets( arr, 80, stdin );
Это тоже не работает
Не надо выдумывать. Это прекрасно работает, с поправкой на то ваше заблуждение, которое вам уже разъяснили.

Еще раз: в языке С уже давно нет никакой функции gets. У вас есть либо вариант с fgets, либо вариант с gets_s.
0
 Аватар для analogov net
2524 / 1123 / 493
Регистрация: 17.11.2018
Сообщений: 2,832
07.12.2019, 00:55
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Функция gets_s имеет два параметра, а не один.
Верно, но в С++ можно и с одним...
Но здесь, всё-таки, Си, нужно два...
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
07.12.2019, 01:51
Цитата Сообщение от analogov net Посмотреть сообщение
Верно, но в С++ можно и с одним...
Не "в С++ можно и с одним", а "в Visual Studio можно и с одним".

Цитата Сообщение от analogov net Посмотреть сообщение
Но здесь, всё-таки, Си, нужно два
Именно.
1
 Аватар для analogov net
2524 / 1123 / 493
Регистрация: 17.11.2018
Сообщений: 2,832
07.12.2019, 02:27
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не "в С++ можно и с одним", а "в Visual Studio можно и с одним".
Я даже больше скажу. В Visual Studio С++ можно и с одним.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2019, 02:27
Помогаю со студенческими работами здесь

Ввод строки через указателя
Проблема в том, что программа вылетает #include&lt;iostream&gt; #include &lt;string&gt; using namespace std; struct client { char...

Неправильно работает ввод с консоли через NextLine()
Только начал изучать java, появилась проблема с вводом данных из консоли. По алгоритму программа сначала проверяет введён ли тип int в...

Ввод строки и проверка через str_int
Есть программа для нахождения неотрицательное степени целого числа через рекурсию. Помогите пожалуйста в строке write(&quot;введите число...

Игнорируется ввод строки через консоль
Здравствуйте! У меня возникла проблема с вводом строки. Когда я запускаю выполнение программы, то происходит игнорирование первого...

Ввод строки через WinApi, WM_CHAR
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); IntPtr ptr = FindWindow(null, &quot;КриптоПро CSP&quot;); ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru