Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2015, 17:44   #11
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

ну а если не любимый мой Microsoft Visual C++ 6.0 взять ?

Добрый день !

Скажите пожалуйста , ставится ли символ конца строки '\0' при записи

строки с помощью функции fputs(a,f1); ?

Код:
int main()

{      
        char c,b[20],a[] = "Hello Anya";
        FILE *f1 = fopen("C:\\Test_2.txt","w");
        fputs(a,f1);
        fclose(f1);
        f1 = fopen("C:\\Test_2.txt","r");
        for (int i=0;(c = fgetc(f1)) != EOF;i++) b[i] = c;
        printf("\n%s\n",b);
        fclose(f1);
        getch();
        return 0;
}
--.JPG

Последний раз редактировалось Stilet; 02.09.2015 в 18:43.
RAFA91 вне форума Ответить с цитированием
Старый 02.09.2015, 12:36   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты умеешь работать с HEX редакторами? Если да - открой файл после записи и посмотри. Я думаю там не будет символа 0.

И еще. Попрошу тебя вставляемые рисунки ужимать от лишней канвы. Не надо пожалуйста простыни вставлять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 12:45   #13
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

тогда поставлю искусственно этот символ.
_________________________

нашел такую функцию как fread().

по описанию не сильно вкурил как она работает

подскажите пожалуйста ее практическое применение .

что это за элементы m и n ?
Изображения
Тип файла: jpg Б.JPG (69.3 Кб, 146 просмотров)
RAFA91 вне форума Ответить с цитированием
Старый 02.09.2015, 12:52   #14
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

По fputs:
http://www.cplusplus.com/reference/cstdio/fputs/
Цитата:
The function begins copying from the address specified (str) until it reaches the terminating null character ('\0'). This terminating null-character is not copied to the stream.
по fread - функция для чтения n элементов, размера m, чего там может быть непонятного - я не знаю.
pu4koff вне форума Ответить с цитированием
Старый 02.09.2015, 13:00   #15
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
По fputs:
[url]h

по fread - функция для чтения n элементов, размера m, чего там может быть непонятного - я не знаю.

размер определять исходя из чего ?

эта функция для чтения структур ?

к примеру в файл положил это Hello Anya

нужно считать один элемент размером 5 байт.

char b[20];

fread(b,5,1,f1); // это вообще корректно ?

Последний раз редактировалось RAFA91; 02.09.2015 в 13:10.
RAFA91 вне форума Ответить с цитированием
Старый 02.09.2015, 13:13   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. Вполне корректно. Пример тут: http://www.programmersforum.ru/showthread.php?t=105501
Код:
fread(&CurRec,sizeof(rec),1,БД);
Считывается 1 блок размером sizeof(rec)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 13:28   #17
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Код:
fread(b,5,1,f1);
// это лажа.

тип char не может быть 5 байт
RAFA91 вне форума Ответить с цитированием
Старый 02.09.2015, 13:37   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
Код:
fread(b,5,1,f1);
// это лажа.

тип char не может быть 5 байт
у вас b, это не char.
все верно написано. вы читаете 5 байт, которые займут 5 первых char элементов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2015, 14:09   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не, ну туда подается указатель )
Если b это char *b то почему бы нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 14:10   #20
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
у вас b, это не char.
все верно написано. вы читаете 5 байт, которые займут 5 первых char элементов.
Код:
fread(b,1,5,f1);
так намного красивее

покурил функцию fseek();

параметр n смещает позицию указателя в файле только вперед.

как ее смещать назад ?

Код:
fseek(f1,n,1);
на n вперед от текущей

может

-n прокатит ?
Изображения
Тип файла: jpg Б.JPG (46.9 Кб, 148 просмотров)
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами на СИ++ Config Помощь студентам 0 21.01.2014 14:36
Работа с файлами apeorin Общие вопросы C/C++ 0 05.12.2012 20:29