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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что со строкой ? 
:(
    Опции темы
bellka
Дата 23.6.2004, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ,подскажите плс:

TCHAR Title[]= "<!--start_bwc-->";
FILE* stream;
int i;
stream = fopen(File_name,"w");
i = fwrite(Title,sizeof(Title),1,stream);
fclose(stream);
return stream;
При выводе в файл прямоугольники,что с кодировкой???Или с чем?sad.gif
PM MAIL ICQ   Вверх
Олег М
Дата 23.6.2004, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



Надо объявить строку вот так:
TCHAR Title[256];
И всё будет нормально
Добавлено @ 05:13
Извини, не разглядел. Показалось что ты читаешь из файла.
PM MAIL ICQ   Вверх
Олег М
Дата 23.6.2004, 05:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



А что за прямоугольники. Вроде латинские буквы всегда нормально выводятся. И твой пример нормально работает. Может проблема в просмотрщике?
PM MAIL ICQ   Вверх
shedon
Дата 23.6.2004, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
Надо объявить строку вот так:
TCHAR Title[256];
И всё будет нормально

А какая разница ?
Добавлено @ 08:43
bellka
Сейчас проверил твой код всё работает правильно.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
AndyY
Дата 23.6.2004, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не нравятся в коде 2 момента:
i = fwrite(Title,sizeof(Title),1,stream);

у тебя Title[sizeof( Title )-1] всегда = 0, отсюда берется 0 символ в текстовом файле (кое-кем может показаться как прямоугольник).

fclose(stream);
return stream;

не вижу смысл возвращать закрытый stream - это указатель на мусорный кусок памяти.



--------------------
PM MAIL WWW   Вверх
shedon
Дата 23.6.2004, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
отсюда берется 0 символ в текстовом файле .

Это что то новенькое... Из чего это следует ?
Я же говорю, что всё прекрасно работает!


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Конструктор
Дата 23.6.2004, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

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



Ну ведь пишется же в файл строка "<!--start_bwc-->\0" вот 0 и берется. sizeof же не будет длину строки считать, он возьмет размер массива, а NULL-терминатор туда входит.

PM MAIL WWW ICQ   Вверх
bel_nikita
  Дата 23.6.2004, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Цитата
Я же говорю, что всё прекрасно работает!
не правда, надо внимательнее быть wink.gif
А нах тут sizeof ?
Тута strlen надо бы biggrin.gif
Цитата
i = fwrite(Title,strlen(Title),1,stream);



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
shedon
Дата 23.6.2004, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
не правда, надо внимательнее быть 

Тебе бинарник прислать ?



--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bel_nikita
  Дата 23.6.2004, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



to shedon
Цитата
Тебе бинарник прислать ?
Ага, присылай. Интересно посмотреть. biggrin.gif
И все-таки надо внимательнее быть biggrin.gif
Цитата
printf("\nsizeof(Title)=%d",sizeof(Title)); // =17 !!!!!!!!!!!!!!!!!!!!!!!!!!!!
printf("\nstrlen(Title)=%d",strlen(Title)); // =16!!!!!!!!!!!!!!!!!!!!!!
Вот теперь возьми и подсчитай, сколько символов в строке "<!--start_bwc-->" и сколько символов пишется в файл. И не надо будет бинарники высылать.
Ладно, пойду уже по полной:
Цитата
Это что то новенькое... Из чего это следует ?
Это не новенькое, а хорошо забытое старое biggrin.gif
Есть такая штука как C-строка. Ты разницу понимаешь между "A" и 'A'. Так, вот пример, чтоб было понятно:
Цитата
  printf("\nsizeof(A)=%d",sizeof("A")); // =2
  printf("\nsizeof(A)=%d",sizeof('A')); // =1

Теперь подумай: стоит ли бинарник высылать, аль не стоит tounge.gif . Зачем спорить не разобравшись???? Просто нет слов mad.gif

З.Ы.: Без обид wink.gif За "тыкание" тоже, все же я страше wink.gif Что-то ты разгорячил меня.


Это сообщение отредактировал(а) bel_nikita - 23.6.2004, 22:03


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
shedon
Дата 23.6.2004, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



из сообщений bellka я понял, что у неё вся строка не выводится, вот и писал, что она выводится, только с нулём на конце, а из сообщения AndyY мне показалось, что у него в файл пишется 0 символов wow.gif. Что ты написал я знаю, просто заглючило меня. smile.gif


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bellka
Дата 24.6.2004, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile.gifСейчас всё заработало!
Но дело такое- если я указываю ровно количество символов в массиве Title(оно указывается в классе,которому массив принадлежит),то в файл записывает
правильно,а если больше-эту же ерунду,могет кто знает отчего,интересно......)))))))))
И всем пасибо !!!
P.S.ту bel_nikita РАЗНИЦЫ НЕ ВИЖУsad.gif
ТУ shedon не он,о онаsmile.gif)))))))))))

PM MAIL ICQ   Вверх
shedon
Дата 24.6.2004, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
ТУ shedon не он,о она)))))))))))

Исправил smile.gif
Добавлено @ 07:18
Цитата
P.S.ту bel_nikita РАЗНИЦЫ НЕ ВИЖУ

В чём ?
в различи между "A" и 'A' ?
В первом случем это массив из двух символов, первый А, второй '\0'- так называемый конец строки.
А во втором случае это просто один символ


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bel_nikita
  Дата 24.6.2004, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Цитата
P.S.ту bel_nikita РАЗНИЦЫ НЕ ВИЖУ
еще один mad.gif bellka почитайте пожалуйста внимательнее.


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
bellka
Дата 24.6.2004, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
еще один  bellka почитайте пожалуйста внимательнее.


Почиталаsmile.gif
sizeof даёт размер в байтах,вроде fwrite это и нужно))))Всегда так указывала и работало,главное(((((

PM MAIL ICQ   Вверх
shedon
Дата 24.6.2004, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
sizeof даёт размер в байтах,вроде fwrite это и нужно))))Всегда так указывала и работало,главное(((((

sizeof даёт размер вместе с нулевым символом на конце!!! А strlen даёт только количество символов в строке без нулевого сивола. т.е. если ты берёшь sizeof то получаешь помимо символа ещё и нулевой символ который в некоторых редакторах обозначается как квадратик, а в других(блокнот) как пробел.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bellka
Дата 24.6.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дело в том,что в любом случае(sizeof или strlen) в файл записываются квадратики,а редактор у меня - блокнот,что тогда вообще странно(если вам верить)smile.gif
PM MAIL ICQ   Вверх
bel_nikita
  Дата 24.6.2004, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Цитата
Дело в том,что в любом случае(sizeof или strlen) в файл записываются квадратики,а редактор у меня - блокнот,что тогда вообще странно(если вам верить)
Да, конечно, фигли там квадратики. Вот когда начнутся записываться шары или параллелепипеды, тогда поверите biggrin.gif

то shedon я думаю нас разводят wink.gif


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
bellka
Дата 24.6.2004, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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





ty bel_nikita
Мне больше делать нечегоsad.gif(((((((
Удачи!
PM MAIL ICQ   Вверх
bel_nikita
  Дата 24.6.2004, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



bellka - без обид wink.gif
я думаю кодировку проверить надо бы smile.gif



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
bellka
Дата 25.6.2004, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile.gifПросто я в ужасе! sad.gif Этот код :

FILE* stream;
char Title[] = "Test";
int num_written;
if( (stream = fopen("C:\1.txt","w")) != NULL)

num_written = fwrite(Title,sizeof(Title),1,stream);

fclose(stream);


всегда работал,он даже файла не создаётsad.gif
PM MAIL ICQ   Вверх
Олег М
Дата 25.6.2004, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



Цитата
if( (stream = fopen("C:\1.txt","w")) != NULL)

надо "C:\\1.txt"
PM MAIL ICQ   Вверх
Paradox
Дата 25.6.2004, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У меня в VC++ 6.0 это работает как надо
Код
#include "stdafx.h"
#include "stdio.h"
#include "afx.h"


int main(int argc, char* argv[])
{
TCHAR Title[]= "<!--start_bwc-->";
   FILE* stream;
   int i;
   stream = fopen("C:\\test.txt","w");
   i = fwrite(Title,sizeof(Title),1,stream);
   fclose(stream);
   return 0;
}



--------------------
---
PM MAIL WWW   Вверх
shedon
Дата 25.6.2004, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
У меня в VC++ 6.0 это работает как надо

adv/29.gif adv/24.gif adv/91.gif


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bellka
Дата 28.6.2004, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да,работаетsmile.gif
И насчёт "C:\\1.txt" верно,а то понимает не так как надоsmile.gif
Пасибо ещё раз
PM MAIL ICQ   Вверх
Олег М
Дата 1.7.2004, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



Мне тут интересную мысль кинули: "компилит наверное в юникоде, вот и квадратики..."
PM MAIL ICQ   Вверх
chipset
Дата 1.7.2004, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Кстати я это и хотел сказать...
Попробуйте заменить TCHAR на char*


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
LOL
Дата 1.7.2004, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.6.2004
Где: Подмосковье

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



Действительно Paradoks у меня компилятор Visual C++
и когда я это
#include "stdafx.h"
#include "stdio.h"
#include "afx.h"


int main(int argc, char* argv[])
{
TCHAR Title[]= "<!--start_bwc-->";
FILE* stream;
int i;
stream = fopen("C:\\test.txt","w");
i = fwrite(Title,sizeof(Title),1,stream);
fclose(stream);
return 0;
}
компилирую мне пишут : fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
Error executing cl.exe.

PM MAIL   Вверх
chipset
Дата 1.7.2004, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Аа... Уже работает.. rolleyes.gif
Добавлено @ 15:02
LOL
Он пытается заголовочный файл открыть, а у тебя его нету убери просто эту строку...

Это сообщение отредактировал(а) chipset - 1.7.2004, 15:03


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
lynx_916
Дата 2.7.2004, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

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



Цитата
C:\\1.txt

или по Униксовскому: "C:/1.txt"
Олег М
я тоже так думаю...


--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1333 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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