0 / 0 / 1
Регистрация: 14.04.2016
Сообщений: 25
1

Ввод-вывод строк

15.11.2016, 08:11. Показов 934. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу на СИ, вводящую символьную строку, подсчитывающую ее длину и печатающую полученный результат. Если строка длиннее заданной максимальной длины, то она "обрезается" (напечатать строку).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2016, 08:11
Ответы с готовыми решениями:

Ввод/вывод строк - Не работает второй gets
#include<stdio.h> #include<conio.h> main() { clrscr(); int c; char*a,*b; gets(a);...

Ввод\вывод строк исходной таблицы логических функций
Программа, реализующая вывод указанных значений для каждого из 16 наборов параметров функции от 4-х...

Неожиданный консольный вывод в задании на поиск в массиве структур по заданному полю (файловый ввод/вывод)
Подскажите, почему программа не работает? Только вот это сообщение выходит: Process exited after...

Работа с файлами. Вывод нечетных строк с указанием номеров строк
#include "stdafx.h" #include "stdlib.h" #include <stdio.h> #include <locale> #include...

11
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
15.11.2016, 08:18 2
C
1
2
3
4
char str[MAX];
fgets(str, MAX - 1, stdin);
printf("%d\n", strlen(str));
puts(str);
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.11.2016, 09:29 3
Цитата Сообщение от LFC Посмотреть сообщение
C
1
fgets(str, MAX - 1, stdin);
Зачем -1 ?
1
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
15.11.2016, 14:02 4
Цитата Сообщение от shvyrevvg Посмотреть сообщение
Зачем -1 ?
для нуля завершающего
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.11.2016, 14:10 5
Цитата Сообщение от LFC Посмотреть сообщение
для нуля завершающего
Так fgets() сам за этим следит
1
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
15.11.2016, 14:16 6
за чем следит?
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.11.2016, 14:31 7
LFC, добавляет нуль.
1
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
15.11.2016, 14:46 8
Цитата Сообщение от shvyrevvg Посмотреть сообщение
добавляет нуль.
да,при этом затирается последний байт,если у вас там что-то написано,этот символ будет стёрт
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.11.2016, 14:55 9
LFC, не понял.
C
1
fgets(str, MAX, stdin);
запишет нуль в str[MAX-1]. Зачем переживать за последний элемент буфера?

Добавлено через 2 минуты
Запишется в MAX-1, при раскладе, если закончится буфер.
1
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
15.11.2016, 14:56 10
Цитата Сообщение от shvyrevvg Посмотреть сообщение
Зачем переживать за последний элемент буфера?
а если пользователь введет полную строку?И в последнем байте будет какая-то важная инфа?
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.11.2016, 15:00 11
LFC, этот байт останется в потоке. И его можно будет вычитать вызвав fgets() еще раз.

Добавлено через 2 минуты
Можно проверить, введите 3-4 символа.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    char buf[3];
    if (!fgets(buf, 3, stdin))
        return -1;
    puts(buf);
    if (!fgets(buf, 3, stdin))
        return -1;
    puts(buf);
    return 0;
}
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12490 / 7511 / 1758
Регистрация: 25.07.2009
Сообщений: 13,823
15.11.2016, 17:22 12
Цитата Сообщение от LFC Посмотреть сообщение
fgets(str, MAX - 1, stdin);
LFC, при таком подходе Вы просто используете на 1 символ меньше, чем могло бы поместиться в буфер.
2
15.11.2016, 17:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2016, 17:22
Помогаю со студенческими работами здесь

Если в файле содержится менее десяти строк, должен осуществляться простой вывод строк
Всем доброго времени суток, не могли бы вы мне помочь с написанием программы: Программе задаётся...

Ввод массива строк разделителей
помогите написать интересную функцию: Ввод элементов массива разделителей заканчивается, когда...

Некорректный ввод строк из файла
Имеется файл books.csv такого формата: 9666965348;Стругацкие;Град обреченный;10;5...

Ввод первой строки массива строк
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; int main() { int n,i; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru