Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
#1

\n \0 EOF - C++

22.10.2013, 23:46. Просмотров 765. Ответов 6
Метки нет (Все метки)

Добрый вечер, возник такой вопрос: зачем мы заменяем символ конца строки на нуль символ в данном коде (удаление символов содержащихся в s2 из строки s1), если можем вести поиск до \n?
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
36
37
38
#include <stdio.h>
#define MAX 100
#define DEL 10
 
void squeeze (char s[], char s1[]);
void written (char s[]);
 
main() {
    char str[MAX];
    char str1[DEL];     
 
    written (str);
    written (str1);
    squeeze (str, str1);
    printf("%s\n", str);
}
 
void written (char s[100]) {
    int i, c;
 
    i = 0;
    while ((c = getchar()) != '\n') {
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
}
 
void squeeze (char s[], char s2[]) {
    int k, i, j;
 
    for (k = 0; s2[k] != '\0'; k++) { 
        for (i = j = 0; s[i] != '\0'; i++)
            if (s[i] != s2[k])
                s[j++] = s[i];
        s[j] = '\0';
    }
}

И в чем разница между вводом до EOF и до \n?


C
1
2
3
4
while ((ch = getchar()) != EOF) 
{
    ...
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 23:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос \n \0 EOF (C++):

Int Eof - C++
Вот проблема есть массив int a заполнять его целыми числами последовательность завершается признаком конца ввода

Не работает while (!***.eof() ! - C++
Здравствуйте, задание такое: Вводить с клавиатуры данные и записывать их в файл в виде Имя группа оценка Иванов ...

EOF K&R - C++
Всем доброго времени суток. Изучаю Си по Дейтелам, а теперь попала в руки книга авторов языка. Интересно теперь будет параллельно по двум...

как поставить EOF? - C++
Ребят, подскажите пожалуйста. Итак, вот листинг программы. Если я открываю файл, созданный с помощью потока, все читается без проблем(я так...

Getchar и putchar EOF - C++
Подскажите что за символ такой EOF? Чисто догадываясь это 0, но не работает. #include &lt;stdio.h&gt; int main() { int c; while((c...

Использование функции eof - C++
Не могу понять, как правильно использовать функцию eof. Программа вообще не распознает эту функцию и выдает ошибку. Библиотека stdio.h...

6
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:59 #2
Цитата Сообщение от Ryuk Посмотреть сообщение
зачем мы заменяем символ конца строки на нуль символ в данном коде
Строка в стиле С - это массив char c '\0' в конце (это и есть символ конца строки). '\n' - это символ новой строки.

Добавлено через 7 минут
Цитата Сообщение от Ryuk Посмотреть сообщение
И в чем разница между вводом до EOF и до \n?
В консольном потоке EOF нужно генерировать (в Windows Ctrl + Z, Ctrl + C).
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
23.10.2013, 16:06  [ТС] #3
alsav22, в конце строки стоят два символа \n и \0?

По поводу eof не понял. Не могли бы по подробнее разъяснить?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,062
Завершенные тесты: 1
23.10.2013, 16:09 #4
Цитата Сообщение от Ryuk Посмотреть сообщение
в конце строки стоят два символа \n и \0?
в конце строки только 0, \n - по желанию, как любой другой символ
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 16:19 #5
Цитата Сообщение от Ryuk Посмотреть сообщение
Не могли бы по подробнее разъяснить?
Такой код запустите и попробуйте выйти:
C++
1
2
3
4
while ((ch = getchar()) != EOF) 
{
   
}
Добавлено через 4 минуты
Цитата Сообщение от Ryuk Посмотреть сообщение
в конце строки стоят два символа \n и \0?
Цитата Сообщение от alsav22 Посмотреть сообщение
'\n' - это символ новой строки.
Может быть, может нет. Смотря где, смотря как... В Windows и DOS состоит из двух символов: \r\n (13 и 10), в UNIX - из одного \n (10), в Mac OS - из одного \r (13).
0
Raali
23.10.2013, 16:21
  #6

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Mac OS - из одного \r (13).
Зачем так?(по сути это символ возврата каретки?)

0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 16:55 #7
И что? Пишут, что в Mac OS символ новой строки такой и один, в отличие от Windows. Значит и каретку возвращает и на новую строку переходит. Называется разделитель строк.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 16:55
Привет! Вот еще темы с ответами:

Почему не срабатывает EOF - C++
У меня стоит Visual Studio 2010 написал простенькую программу #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; int main() { int...

Функция fclose() и EOF - C++
int fclose( FILE *stream); Возвращает 0, если все ОК и возращает EOF, если какая-нибудь ошибка. Функция имеет тип Int. Значит...

Печать значения EOF - C++
Упр.1.7. Керниган,Ритчи.Написать программу,печатающую значение EOF.Натолкните на мысль.Заранее благодарен.

EOF: call of nonfunction - C++
Не пойму в чем ошибка, пишет call of nonfunction


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
23.10.2013, 16:55
Ответ Создать тему
Опции темы

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