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

FILE*,fopen,fprintf - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
20.12.2011, 20:06     FILE*,fopen,fprintf #1
Закомментируйте код пожалуйста , если можно поподробней и где неправильно поправьте;>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(void) {
  FILE* fp;/// создается указатель на переменную типа FILE
  char *p, buf[255] = {'\0'}; // создается указатель и массив
  printf("in str: ");
  scanf("%254[^\n]", buf); // что значит [^\n]?
 
  fp = fopen("dump.txt", "w+"); //  открытие файла на запись и чтение
  for(p = buf;*p ; *p++)       //  вот тут бы поподробней
       fprintf(fp, "%02X ", *p);  // запись в файл в 16 формате?
  fclose(fp);
  system("pause");
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 20:06     FILE*,fopen,fprintf
Посмотрите здесь:

C++ cin cout и fscan fprintf
fprintf C++
Аналог функции fprintf в с++ C++
fprintf не переводит на новую строку C++
C++ fwrite, fprintf
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
20.12.2011, 20:15     FILE*,fopen,fprintf #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(void) {
  FILE* fp;/// создается указатель на переменную типа FILE
  char *p, buf[255] = {'\0'}; // создается указатель и массив
  printf("in str: ");
  scanf("%254[^\n]", buf); // %254[^\n] значит "ввести строку не более 254 символов, признак конца - перевод строки", по идее должно быть "%254[^\n]s"
 
  fp = fopen("dump.txt", "w+"); //  открытие файла на добавление (запись без стирания предыдущего содержимого)
  for(p = buf;*p ; *p++)       //  начиная с p = buf до тех пор, пока не встретится нулевой символ, перебирать по одному символу. Тут должно быть просто p++, без *
           fprintf(fp, "%02X ", *p);  // запись очередного символа в файл в 16 формате
  fclose(fp);  // закрытие файла
  system("pause");
  return 0;
}
2e1553ce
1 / 1 / 1
Регистрация: 16.12.2011
Сообщений: 47
20.12.2011, 22:04  [ТС]     FILE*,fopen,fprintf #3
спасибо

Добавлено через 1 час 7 минут
Можете еще подсказать как сделать чтобы ввод не заканчивался при нажатии 'Enter'(в консоли) и в созданном файле (dump.txt) при количестве символов больше 20 происходил переход на новую строку?
Тоесть ввожу в консоли например 30 символов , жму энтер ввожу еще 40 итд...
а при нажатии 'Esc' программа закрывается и все сохраняется в файле с лимитом строки в 20 символов.

Добавлено через 40 минут
с вводом разобрался , как сделать ограничение в сохраняемом файле в 20 символов подскажите плс ;P
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
21.12.2011, 19:32     FILE*,fopen,fprintf #4
Для такого ограничения надо перейти к двум вложенным циклам (один перебирает группы по 20 символов и после каждой выводит условие, второй вложен в первый и выводит все 20 символов в текущей группе) или вставить условие внутрь имеющегося (проверять номер текущего символа, и если он кратен 20, то выводить перевод строки).
Yandex
Объявления
21.12.2011, 19:32     FILE*,fopen,fprintf
Ответ Создать тему
Опции темы

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