2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Массив строк в С
Сообщение17.07.2012, 01:35 


03/05/12
56
Полагаю, вы имели в виду что-то такое:

код: [ скачать ] [ спрятать ]
Используется синтаксис C
   long int i;
    int j=0;
    char c;
    char line[10];
    i=0;
    while (((c = getchar()) != EOF) && (i<10) )
    {
        line[i] = c;
        ++i;
    }

    line[i-1] = '\0';
    printf("%s", line);
    getchar();
    return 0;
 

Тут тоже надо ввести строку, потом Enter, потом ctrl+z и Enter.

 Профиль  
                  
 
 Re: Массив строк в С
Сообщение17.07.2012, 16:01 
Заслуженный участник


04/05/09
4587
Ну вот опять!
Переменная, в которую сохраняется результат getchar() должна быть int, а не char.
Иначе ваша программа остановится не только на Ctrl-Z, но и на 'я' в кодировке 1251.

 Профиль  
                  
 
 Re: Массив строк в С
Сообщение20.07.2012, 23:57 
Аватара пользователя


26/02/11
332
Pavia в сообщении #596021 писал(а):
Цитата:
Что здесь не так?

В цикле произойдёт переполнение массива раньше чем дайдёт до условия проверки переполнения.

Вот исправил:
код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include <stdio.h>
#include <conio.h>

int main()
{
    char line[10];
    int i, c;
   
    for (i = 0; i < 10 && (c = getchar()) != EOF && c != '\n'; ++i)
        line[i] = c;
    if (c == '\n') {
       line[i] = c;
       }
   
    ++i;
    line[i] = '\0';
   
    printf("%s", line);
         
    getch();
    return 0;
}

Вроде исправил. :wink:
Pavia в сообщении #596013 писал(а):
А для ручного в вода лучше обрабатывать нажатие клавиши Enter.
lim(f(x)) уже привел пример.

Спасибо, послушаю.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group