C++ проблемче

11 отговора 707 прегледа
#1

C++ проблемче

Малка задачка, която ми скусва нервите вече 2 дни!!!!
Значи имам си 1 .txt файл със следния вид:

az.wav&se.wav&kazvam.wav& ... &

Целта е да се прочете файла и да се пуснат последователно всички wav файлове. И това да стане на С++!

(аз сгъвам още на четенето на имената на wav файловете)

Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на Цвeтeтo #2

къде е проблема?

не изглежда сложно, какво се получава при тебе?

значи можеш да го направиш със най-стандартно fscanf - имаш възможност да указваш валидни символи. ако в тях не включиш '&', то то ще се смята за разделител и тогава fscanf("%[валидни символи]",....) ще ти чете името.

Отговор
в отговор на Цвeтeтo #3

Re: C++ проблемче


#include <windows.h>
#include <stdio.h>

#pragma comment(lib,"winmm.lib")

int main( int argc, char *argv[] )
{
FILE *f;
char line[4096] = "", *p;

f = fopen("1.txt","rt");
if( !f )
{
fprintf( stderr, "Faila 1.txt ne e nameren, ili ne mozhe da se otvori\n" );
return 1;
}
fgets( line, sizeof(line), f ); // Procheti purwata linia ot faila
fclose( f );

// Premahwane na novia red ot liniata
p = strchr(line,10); if(p) *p=0;
p = strchr(line,13); if(p) *p=0;

// Preturswane na wsichki failove
for( p=strtok(line,"&"); p; p = strtok(NULL,"&"))
PlaySound( p, GetModuleHandle(0), SND_SYNC | SND_FILENAME );

return 0;
}


Purwo - predpolagam che si pod Windows, i polzwash MSVC.
Prednoto go zapishi pod ime playWave.c i go kompiliraj ot komandnata linia

cl playWay.c

mozhe i ot MSVC IDE-to - napravi edno prazno CONSOLNO (ne WINDOWED, a consolno) prilozhenie - dobavi tozi fail i mozhe da raboti.

Az njama kak da go testwam tova, tuj kato go pisah pod domashnata si mashina (Red Hat Linux)

Редактирано от malkia на

Отговор
в отговор на malkia #4

Re: C++ проблемче

Thanks.
Ще пробвам и ще кажа.

Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на malkia #5

Re: C++ проблемче

Точно тово ми трябва
а знаеш ли как може exe-то да се стартира като background процес. В смисъл да не ми се отваря прозорец или в най-лошия случай да ми излиза мимимизиран???

Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на Цвeтeтo #6

Re: C++ проблемче

Problema idva ot fakta che programata se kompilira kato konsolna, i se otvarja konsola zaradi tova. Za da si reshish problema prosto dobavi slednite dve linii


#pragma comment(linker,"/SUBSYSTEM:WINDOWS")
#pragma comment(linker,"/ENTRY:mainCRTStartup")


Purwata shte nakara prilozhenieto da se startira kato WINDOWS-sko - t.e. njama da mu se otvarjat konsolni dzhametzi.

Wtoroto shte nakara pak da se wika main(), wmesto WinMain() wupreki che prilozhenieto ne e konsolno.

I dvete razshirenia sa MSVC specific (njama da rabotjat pod Borlandski ili WATCOMski kompilatori)...

Отговор
в отговор на malkia #7

Re: C++ проблемче

Сега вече всичко е ОК.

Мерси.

Цялата работа беше, за да ми проговори AI-то, т.к. пиша на Strawberry Prolog и незнам защо няма 1 функцийка за пускане на wave-чета. Много тъпо. А пък в Help-а му няма описани и половината от възможностите му и не питай колко съм се ровила из примерните програмки, за да откривам това, което ми трябва.

Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на Цвeтeтo #8

Re: C++ проблемче

Хм, приличаш на нещо от сорта на Информатика II курс.

Интересни курсови раздаваха по логическо, жалко само че всички минаваха с чужди.



Отговор
в отговор на Vroomfundel #9

Re: C++ проблемче

Ami хич не прилича това на курсова работа... по скоро на бас се е хванало момичето или за нещо друго му трябва...

Отговор
в отговор на malkia #10

Re: C++ проблемче

Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C

Sega problema e takuv:
Imam 1 fail s dumi - na vseki red po 1 duma. primerno adjectve.txt s 100 dumi
Imam si i 100 wave faila s imena Phrase 1.wav, ..., Phrase 100.wav

iskam da preimenuvam Phrase X.wav na dumata_na_suotvetniq_red_v_faila_adjective.wav

vij kakvo pravq:
void CRenameDlg::OnOK()
{

CString Path = "F:\\_WAVE\\adjective\\";

FILE *f;
char line[4096] = "", *p;
f = fopen("F:\\_WAVE\\adjective\\adjective.TXT", "rt");
if(!f)
{
MessageBox("File not found");
exit(1);
}

int result,i=0;

UpdateData(TRUE);

int decimal, sign;
char *buffer;

while (!feof(f))
{
fgets(line, sizeof(line),f);
i++;
p=strchr(line,10); if(p) *p=0;
p=strchr(line,13); if(p) *p=0;

buffer = _fcvt( i, 0, &decimal, &sign );

m_ComName = Path + m_ComName + " " + buffer + ".wav";
m_SourseFile = strcat(line , ".wav");
m_SourseFile = Path + m_SourseFile;

result = rename((LPCSTR)m_ComName,(LPCSTR)m_SourseFile);

if( result != 0 )
{
MessageBox( "Could not rename" );
exit(2);
}
/*else
MessageBox( "File renamed");*/
}

CDialog::OnOK();
}
I ne stava i ne stava. I tekstoviq fail i wav-chetata sa v F:\\_WAVE\\adjective\\ sus sigurnost.

Na Pascal stana tolkova lesno, ama nali imenata trqbva da sa do 8 simvola, Pascal za win ne mi vurvi pod 2000-to, a tupiq Prolog otnovo nqma funkciq za preimenuvane.Delphi ne mi se instalira i vsichko otnovo oprq do C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C,Mrazq C

Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на Zaphod® #11

Re: C++ проблемче


ne e kursova, ne e i bas


Nobody can be exactly like me. Even I have trouble doing it.
Отговор
в отговор на Цвeтeтo #12

Re: C++ проблемче

eto tova e problema

m_ComName = Path + m_ComName + " " + buffer + ".wav";

Ot tuka ne stava jasno dali m_ComName e vremenna promenliva, ili stoinostta i e wazhna otvun. Zatova slozhih edna wutreshna promenliva "CString ComName" i promenih w njakoi ot mestata m_ComName sus ComName.

eto kak da go opravish

void CRenameDlg::OnOK()
{

CString Path = "F:\\_WAVE\\adjective\\";
CString ComName;

FILE *f;
char line[4096] = "", *p;
f = fopen("F:\\_WAVE\\adjective\\adjective.TXT", "rt");
if(!f)
{
MessageBox("File not found");
exit(1);
}

int result,i=0;

UpdateData(TRUE);

int decimal, sign;
char *buffer;

while (!feof(f))
{
fgets(line, sizeof(line),f);
i++;
p=strchr(line,10); if(p) *p=0;
p=strchr(line,13); if(p) *p=0;

buffer = _fcvt( i, 0, &decimal, &sign );

ComName = Path + m_ComName + " " + buffer + ".wav";
m_SourseFile = strcat(line , ".wav");
m_SourseFile = Path + m_SourseFile;

result = rename((LPCSTR)ComName,(LPCSTR)m_SourseFile);

if( result != 0 )
{
MessageBox( "Could not rename" );
exit(2);
}
/*else
MessageBox( "File renamed");*/
}

CDialog::OnOK();
}

Отговор