2014 dxdy logo

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

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




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

код: [ скачать ] [ спрятать ]
Используется синтаксис 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 
Ну вот опять!
Переменная, в которую сохраняется результат getchar() должна быть int, а не char.
Иначе ваша программа остановится не только на Ctrl-Z, но и на 'я' в кодировке 1251.

 
 
 
 Re: Массив строк в С
Сообщение20.07.2012, 23:57 
Аватара пользователя
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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group