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

Строки (массив char), указатели. Не могу понять логику! Help! - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
.des.
Сообщений: n/a
13.12.2008, 09:10     Строки (массив char), указатели. Не могу понять логику! Help! #1
Вообщем проблема в том что выводятся лишние символы в строках.. хотя в них есть признак окончания строк - нулевой байт
я новичок в С поэтому сложно дойти в чем я заблуждаюсь - вообще в логике языка или какая то частная ошибка

#define MAXDATASIZE 10000
char answer[MAXDATASIZE]={''};
char *p=NULL;
FILE *request_file;
char ch;
main()
{
memset(answer, 0x00, sizeof(answer));
strcpy(answer,'Kakaja to stroka dlinoi skazhem 100 simvolov!!!! sssssssssssssssssss');
// Вывод всей строки - все 100 символов
cout << answer;
if ((request_file=fopen(name_request_file, 'r'))==NULL)
{
fprintf(stderr, 'Cannot open input file.
');
return 1;
}
p=answer;
while(!feof(request_file)) // файл длиной допустим 80 символов.
{
ch=fgetc(request_file);
*p++=ch;
}
*p='' // Добавляем нулевой байт конца строки
cout << answer;
// выводится сам файл и остатки первой строки - то есть лишние 20 байт!
// Блин! Вот я и не пойму так должно быть или я в принципе делаю что-то неправильно?
// ведь он должен выводить строку!! А нулевой байт у нее на отметке 80 символов.
// Замена потока cout на функцию printf ничего не дает.как же сложно переходить на C с Делфи
return 1;
}

Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2008, 09:10     Строки (массив char), указатели. Не могу понять логику! Help!
Посмотрите здесь:

C++ Массив указателей не могу понять ошибку
C++ Не могу понять зачем нужны указатели?
C++ Строки в С++, не могу понять что неправильно в программе
строки в С++.. не могу их понять.. C++
C++ Указатели не могу понять
Массив символов char и указатели C++
C++ Не могу понять 2 строки кода функции из методички
Не могу понять логику, обьясните что за чем пожалуйста C++
C++ Не могу заполнить массив char
Вывод строки. Не могу понять, в чем дело C++
C++ Символьные литералы, указатели и функция. Не могу понять, почему именно так
C++ Не могу понять, как "живут" файловые указатели

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2413 / 1635 / 204
Регистрация: 08.06.2007
Сообщений: 6,473
Записей в блоге: 4
13.12.2008, 22:38     Строки (массив char), указатели. Не могу понять логику! Help! #2
Странно, ваш пример на VC 6.0 и на Borland C работает правильно. Какой компилятор вы используете?
Cordell
1 / 1 / 0
Регистрация: 17.12.2008
Сообщений: 6
17.12.2008, 11:08     Строки (массив char), указатели. Не могу понять логику! Help! #3
А сделайка в хвосте p = answer; и cout << p;

Возможно у тебя какой-то веселый компилер с библиотекой потоков, который различай в операторе << char[] и char*...

Всех благ. Артем.
Yandex
Объявления
17.12.2008, 11:08     Строки (массив char), указатели. Не могу понять логику! Help!
Ответ Создать тему
Опции темы

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