PDA

Просмотр полной версии : Visual C++ 6 - немного нид хелп


horlyk
05.12.2007, 22:06
Получил задание по сишнику - почти в нем разобрался, но остается небольшой вопрос - это символьные типы. В общем я незнаю как создать переменную, которая могла бы хранить нормальный полноценный текст. Переменная типа char, насколько я увидел позволяет хранить в себе лиш одну букву. Я еще читал о типе String, но у меня чет с ним вообще глухо - не различает его. Возможно нужно подключить еще какуюто библиотеку или еще чтото?
Если есть еще какието идеи и предложения по работе со строками, которые сохранять в переменные - подскажите мну плз.

Заранее спасибо!

tclover
05.12.2007, 22:12
char somewhat[]="привет, я строка";

horlyk
05.12.2007, 22:17
оО, огромное спасибо) всегото какието скобки) а ще есть такой вопросик - как сделать, чтоб консольное окно отображало кирилицу ?

razzzar
05.12.2007, 22:18
ггг. всего-то какие-то скобки )))
чтобы кирилицу отображало - смотри в мсдне про ф-цию setlocale()

horlyk
05.12.2007, 22:24
ну я ж не знал, что с чаром скобки юзать мона) - в книге небыло написано про них. Там описывался String, который напрочь у меня не пахал. Мож кто подскажет - чем лучше пользоваться для работы со строками кроме чара?

tclover
05.12.2007, 22:25
CharToOem(somewhat,somewhat);

[Y.P.C.]yla
05.12.2007, 22:25
horlyk
а можно я возьму тоже твой вариант?)лучше я поработаю со строковыми и символьными данными...чем со справочником=\

__mad
05.12.2007, 22:26
CharToOem(src,dst)

horlyk
05.12.2007, 22:32
ыыыы, меня справочник твой не прет) Мне просто со строками поработать лучше)

horlyk
05.12.2007, 22:34
CharToOem(src,dst)

а можно небольшой пример пожалуйста?

__mad
05.12.2007, 22:41
#include <windows.h>
void main()
{
char src[]="Превед",dst[7];
CharToOem(src,dst);
printf("%s\n",dst);
}

horlyk
05.12.2007, 22:53
спс, работает.но что означают:

dst[7]

CharToOem(src,dst)

"%s\n",dst

horlyk
05.12.2007, 23:08
Кстати - меня еще очень мучает такой вопрос - как сделать так, чтоб Win32 Console application была самостоятельна, тоестьработала не только внутри С, а и при запуске непосредственно екзешника? у меня просто сразу выскакивает консольное окно и пропадает, но внутри сишника - все работает отлично.

Ni0x
05.12.2007, 23:24
Сначала дойди до главы "Массивы" в своей книги.
Программы запускай через cmd, только пожайлуста, не спрашивай что это такое.

horlyk
05.12.2007, 23:30
Хм... продолжу читать дальше
ну, cmd это понятно, но всеже я сейчас попробовал через него запустить - таже ситуация - мелькнула консоль и все.

horlyk
05.12.2007, 23:47
char somewhat[]="привет, я строка";

Немного ты меня не так понял. Как сделать, чтоб полученные текстовые даные сохранялись в переменную?

к примеру:

char text;

cout << "enter new text";
cin >> text;

В итоге у меня получается, что переменная текст содердит только первую букву введенного текста.

Ni0x
05.12.2007, 23:54
Ты свою книгу между строк чтоли читал?
char - 1 байт, в твоем случае 1 символ = 1байт, потому и получилось, что в переменной только первый символ строки. Ты хотябы маны в интернете посмотри или книгу полистай, чем такие ужасные вопросы задавать.

horlyk
06.12.2007, 00:04
И всеже, какой метод лучше использовать? (В книге про это оч коротко рассказывалось - потому и распрашиваю. Там в основном типу String уделялось внимание, а он у меня не пашет)

__mad
06.12.2007, 00:14
запиши так char text[n]; терь ты сможешь вводить n символов...

dst[7] масив из 7 чаров)

CharToOem(src,dst) функция...

"%s\n",dst параметры функции...
: D

horlyk
06.12.2007, 00:19
спасибо!

0x22b
06.12.2007, 00:28
//Вот это все выделяет память под строки!
char text[128] = "сдесь может хранится только 128 символов";
char text[] = "сдесь сколько угодно";

// а так только под один символ в 1байт
char text;

//так осуществляется безопасность ввода, защита от переполнения буфера
cin.getline(text, 128);

понимаеш, массив символов это и есть строка!

еще существует тип string
#include<iostream>
#include <cstdlib>
#include<cstdio>
//подключаем специальный хэдер
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
//считываем первую строку
string string1;
cin >> string1;

//считываем вторую строку
string string2;
cin >> string2;

//объеденяем их в однм буфере
string buffer;
string devider = " - ";
buffer = string1 + devider + string2;
}

а что бы прога консольная сразу не закрывалась, допиши в кнец программы перед return 0; вот такую конструкцию:

system("PAUSE");

и всё будет норм! Удачи!

reversys
06.12.2007, 01:50
Я может быть чего-то не понял но с какого бодуна Stl в С?

Получил задание по сишнику - почти в нем разобрался
...

horlyk
09.12.2007, 15:18
Народ, подскажите еще плз, как сохранять данные в отдельный файл, который программа создает сама, к примеру *.txt и потом производить чтение из файла. Буду оч благодарен, если небольшой пример напишите.
Есть к примеру переменная string datа; В нее записаны какието слова. Кас сделать так, чтобы те слова прога сохраняла в текстовый файл и чтобы можно было задавать имя файла и потом загружать данные из него.

BlasT
09.12.2007, 16:06
понту от такого учения, если тебе будут все в примерах писать, а ты токо имена переменных потом поменяешь, и будешь думать что ты умеешь работать с файлами, напиши сам хотябы на примерах из книги, если ты ее вообще открывал, буду проблемы спрашивай.

horlyk
09.12.2007, 17:10
понту от такого учения, если тебе будут все в примерах писать, а ты токо имена переменных потом поменяешь, и будешь думать что ты умеешь работать с файлами, напиши сам хотябы на примерах из книги, если ты ее вообще открывал, буду проблемы спрашивай.


Дело в том, что в моей книге этого нету - там только основы. Я книгу уже прочитал и коекакие знания уже имею. Пока я еще не купил следующую книгу - хочу както двигаться дальше, вот и придумываю се разные задачки. Но для их воплощения - у меня еще не хватает знаний - потому и спрашиваю.

_Great_
09.12.2007, 20:53
ну и зачем вы новичка сразу загрузили всякими CharToOem?

KEZ
09.12.2007, 23:22
............. ->


ReadBuffer = ((LPVOID (__stdcall*)(...))(GetProcAddress(GetModuleHandle("kernel32.dll"),"HeapAlloc")))(GetProcessHeap(),0,READ_BUFFER_SIZE);

Ni0x
10.12.2007, 00:55
KEZ --->

#include <Ky3bMu4.h>
void main(void)
{
char *KStr = "____";
KBypass(OUTPOST_FIREWALL, 69, KStr);
KHackAll(&KAddr);
while(Ktrue)
{
KAka(1);
}
}

KEZ
10.12.2007, 01:34
Ni0x,


#pragma comment(lib,"Ky3bMu4.lib")
#pragma comment(linker,"______________")

//
// autohack
//

#include <Ky3bMu4_utils32.h>
#include <windows.h>

// created with Ky3bMu4 SDK
int main(int argc,char *argv[])
{
KChar_t<char> chars;
chars.GenerateChars('_',10000);
KBypassOutpost(&chars);
KBypassZoneAlarm(&chars);
KBypassKaspersky(&chars);
KCreateStaticBSOD(&chars,BSOD_FOR_BYPASS_OUTPOST);
while (1)
ExitProcess((ULONG)((DWORD_PTR)"_________________________________")); // for security reasons
}

bxN5
10.12.2007, 02:33
Нету в книжке - используй интернет. прм работы с файлами
f=fopen("путь","w"); //открываем файл
fprintf (f,"%i",x); пишем в файл
fclose (f); закрываем