Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл динамически меняющегося i, Ошибка при компилляции 
:(
    Опции темы
russians
Дата 26.3.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Добрый день. При попытке записать fprintf( fo, "%s\n", i); выдаёт следующее:
18 C:\Mapsoft\nekro.cpp name lookup of `i' changed for new ISO `for' scoping..
в чём дело?

Код вот:
Код

#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
char OutputFile[3000]="";
int main(void)
{
    FILE * fo;
    fo = fopen("nomera.html","rt+");
    strcat(OutputFile,"<html><head><title>Телефонные номера</title></head>");
    strcat(OutputFile,"<body>");
    for (int i=1; i<5000; i++);
    {
        strcat(OutputFile,"<table cellpadding=""0"" cellspacing=""0"" width=""100%""><tr align=""center""><td colspan=""3"" style=""font-size: 160%; font-family: sans-serif"">Телефон #: ");
        fprintf( fo, "%s\n", OutputFile);
        fprintf( fo, "%s\n", i);
        OutputFile = "";
        strcat(OutputFile,"</td></tr><tr><td>Дата замены</td><td>Исполнитель</td><td>Следующая замена</td></tr></table>");
        strcat(OutputFile, "<br clear=all style=""page-break-before:always"">");
        fprintf( fo, "%s\n", OutputFile);
        OutputFile = "";
    }
    i = 0;
    strcat(OutputFile,"</body></html>");
    fprintf( fo, "%s\n", OutputFile);
    fclose(fo);
}
    



Это сообщение отредактировал(а) russians - 26.3.2008, 12:31
PM MAIL   Вверх
Rififi
Дата 26.3.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



переменная i доступна только внутри цикла for
PM MAIL   Вверх
russians
Дата 26.3.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Rififi, уже увидел ошибку smile цикл замкнулся на ;
Теперь ещё одна проблема, последняя:
17 C:\Mapsoft\nekro.cpp incompatible types in assignment of `const char[1]' to `char[3000]' 
Как безболезненно опорожнить OutputFile? Константную строчку присваивать низя :( Что посоветуете, комрады?

Это сообщение отредактировал(а) russians - 26.3.2008, 12:40
PM MAIL   Вверх
Rififi
Дата 26.3.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



OutputFile = "";
заменить на 
OutputFile[0] = '\0';
PM MAIL   Вверх
russians
Дата 26.3.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Не работает :(
Код

#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
char OutputFile[3000]="";
int main(void)
{
    FILE * fo;
    fo = fopen("nomera.html","rt+");
    strcat(OutputFile,"<html><head><title>Телефонные номера</title></head>");
    strcat(OutputFile,"<body>");
    for (int i=1; i<30; i++)
    {
        strcat(OutputFile,"<table cellpadding=""0"" cellspacing=""0"" width=""100%""><tr align=""center""><td colspan=""3"" style=""font-size: 160%; font-family: sans-serif"">Телефон #: ");
        fprintf( fo, "%s\n", OutputFile);
        fprintf( fo, "%s\n", i);
        OutputFile[0] = '\0';
        strcat(OutputFile,"</td></tr><tr><td>Дата замены</td><td>Исполнитель</td><td>Следующая замена</td></tr></table>");
        strcat(OutputFile, "<br clear=all style=""page-break-before:always"">");
        fprintf( fo, "%s\n", OutputFile);
        OutputFile[0] = '\0';
    }
    strcat(OutputFile,"</body></html>");
    fprintf( fo, "%s\n", OutputFile);
    fclose(fo);
}

Видимо OutFile '/0'+строка не кушает...

Это сообщение отредактировал(а) russians - 26.3.2008, 12:58
PM MAIL   Вверх
werqwrt
Дата 26.3.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 23.3.2008

Репутация: нет
Всего: 1



Код

strcat(OutputFile,"<table cellpadding=""0"" cellspacing=""0"" width=""100%""><tr align=""center""><td colspan=""3"" style=""font-size: 160%; font-family: sans-serif"">Телефон #: ");
strcat(OutputFile, "\0");

PM MAIL   Вверх
russians
Дата 26.3.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Код

#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
char OutputFile[3000]="";
int main(void)
{
    FILE * fo;
    fo = fopen("nomera.html","wt+");
    strcat(OutputFile,"<html><head><title>Телефонные номера</title></head>");
    strcat(OutputFile,"<body>");
    for (int i=1; i<30; i++)
    {
        strcat(OutputFile,"<table cellpadding=""0"" cellspacing=""0"" width=""100%""><tr align=""center""><td colspan=""3"" style=""font-size: 160%; font-family: sans-serif"">Телефон #: ");
        fprintf( fo, "%s\n", OutputFile);
        fprintf( fo, "%s\n", i);
        strcat(OutputFile, "\0");
        strcat(OutputFile,"</td></tr><tr><td>Дата замены</td><td>Исполнитель</td><td>Следующая замена</td></tr></table>");
        strcat(OutputFile, "<br clear=all style=""page-break-before:always"">");
        fprintf( fo, "%s\n", OutputFile);
        strcat(OutputFile, "\0");
    }
    strcat(OutputFile,"</body></html>");
    fprintf( fo, "%s\n", OutputFile);
    fclose(fo);
}


Обратно не работает :(((

Добавлено через 14 минут и 27 секунд
камрады, выручайте, начальство прибьёт если не сгенерю страничку :(
PM MAIL   Вверх
Rififi
Дата 26.3.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



1. убери нафиг OutputFile - формирование строки, а потом передача её в fprintf как "%s" - лишнее.
2. двойная кавычка в строке записывается так: \"
3. \0 - это символ-териминатор. запись strcat(OutputFile, "\0") говорит о том что ты либо не понимаешь как устроены строки в Си, либо пытаешься сделать что-то запредельное.

примерный шаблон вывода:

Код

fp = fopen(...);
fprintf(fp, "<head>...<body>\n");
for(...)
{
    fprintf(fp, "<table ...>Телефон: %d\n", i);
    fprintf(fp, "</td>...<br...>\n");
}
fprintf(fp, "</body></html>\n");


Это сообщение отредактировал(а) Rififi - 26.3.2008, 13:39
PM MAIL   Вверх
xvr
Дата 26.3.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата

 fprintf( fo, "%s\n", i);
Запись целой переменной (i) по строковому формату (%s) ни к чему хорошему не приведет  smile Используй целочисленный формат (%d) - он на то и сделан  smile 
PM MAIL   Вверх
inside_pointer
Дата 27.3.2008, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Код

strcpy(string, " \0\0\0 ")

Пробелы можно убрать конечно, это чтобы если у тебя strtok где нибудь, чтобы он нифига не работал.

Это сообщение отредактировал(а) inside_pointer - 27.3.2008, 05:08
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.