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

\n \0 EOF - C++

Восстановить пароль Регистрация
 
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
22.10.2013, 23:46     \n \0 EOF #1
Добрый вечер, возник такой вопрос: зачем мы заменяем символ конца строки на нуль символ в данном коде (удаление символов содержащихся в 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) 
{
    ...
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 23:46     \n \0 EOF
Посмотрите здесь:

C++ Int Eof
как поставить EOF? C++
Печать значения EOF C++
C++ Getchar и putchar EOF
C++ EOF что это
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:59     \n \0 EOF #2
Цитата Сообщение от Ryuk Посмотреть сообщение
зачем мы заменяем символ конца строки на нуль символ в данном коде
Строка в стиле С - это массив char c '\0' в конце (это и есть символ конца строки). '\n' - это символ новой строки.

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

По поводу eof не понял. Не могли бы по подробнее разъяснить?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
23.10.2013, 16:09     \n \0 EOF #4
Цитата Сообщение от Ryuk Посмотреть сообщение
в конце строки стоят два символа \n и \0?
в конце строки только 0, \n - по желанию, как любой другой символ
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 16:19     \n \0 EOF #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).
Raali
23.10.2013, 16:21
  #6

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 16:55     \n \0 EOF
Еще ссылки по теме:

C++ Что делать с EOF
C++ EOF K&R
Eof не находит конца C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 16:55     \n \0 EOF #7
И что? Пишут, что в Mac OS символ новой строки такой и один, в отличие от Windows. Значит и каретку возвращает и на новую строку переходит. Называется разделитель строк.
Yandex
Объявления
23.10.2013, 16:55     \n \0 EOF
Ответ Создать тему
Опции темы

Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru