C++ проблемче
11 отговора
707 прегледа
C++ проблемче
Малка задачка, която ми скусва нервите вече 2 дни!!!!
Значи имам си 1 .txt файл със следния вид:
az.wav&se.wav&kazvam.wav& ... &
Целта е да се прочете файла и да се пуснат последователно всички wav файлове. И това да стане на С++!


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


Nobody can be exactly like me. Even I have trouble doing it.
Значи имам си 1 .txt файл със следния вид:
az.wav&se.wav&kazvam.wav& ... &
Целта е да се прочете файла и да се пуснат последователно всички wav файлове. И това да стане на С++!
Nobody can be exactly like me. Even I have trouble doing it.
къде е проблема?
не изглежда сложно, какво се получава при тебе?
значи можеш да го направиш със най-стандартно fscanf - имаш възможност да указваш валидни символи. ако в тях не включиш '&', то то ще се смята за разделител и тогава fscanf("%[валидни символи]",....) ще ти чете името.
значи можеш да го направиш със най-стандартно fscanf - имаш възможност да указваш валидни символи. ако в тях не включиш '&', то то ще се смята за разделител и тогава fscanf("%[валидни символи]",....) ще ти чете името.
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 на
Re: C++ проблемче
Thanks
.
Ще пробвам и ще кажа.
Nobody can be exactly like me. Even I have trouble doing it.
Ще пробвам и ще кажа.
Nobody can be exactly like me. Even I have trouble doing it.
Re: C++ проблемче
Точно тово ми трябва
а знаеш ли как може exe-то да се стартира като background процес. В смисъл да не ми се отваря прозорец или в най-лошия случай да ми излиза мимимизиран???
Nobody can be exactly like me. Even I have trouble doing it.
а знаеш ли как може exe-то да се стартира като background процес. В смисъл да не ми се отваря прозорец или в най-лошия случай да ми излиза мимимизиран???
Nobody can be exactly like me. Even I have trouble doing it.
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
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)...
#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)...
Re: C++ проблемче
Сега вече всичко е ОК.
Мерси.
Цялата работа беше, за да ми проговори AI-то
, т.к. пиша на Strawberry Prolog и незнам защо няма 1 функцийка за пускане на wave-чета. Много тъпо. А пък в Help-а му няма описани и половината от възможностите му и не питай колко съм се ровила из примерните програмки, за да откривам това, което ми трябва.
Nobody can be exactly like me. Even I have trouble doing it.
Мерси.
Цялата работа беше, за да ми проговори AI-то
Nobody can be exactly like me. Even I have trouble doing it.
Re: C++ проблемче
Хм, приличаш на нещо от сорта на Информатика II курс.
Интересни курсови раздаваха по логическо, жалко само че всички минаваха с чужди.
Интересни курсови раздаваха по логическо, жалко само че всички минаваха с чужди.
Re: C++ проблемче
Ami хич не прилича това на курсова работа... по скоро на бас се е хванало момичето или за нещо друго му трябва...
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.
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.
Re: C++ проблемче
ne e kursova, ne e i bas
Nobody can be exactly like me. Even I have trouble doing it.
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();
}
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();
}