Problem s argumentom funkcie v C

Programovacie jazyky, rady, poradňa...
tomy72
Light Expert
Light Expert
Príspevky: 52
Registrovaný: 25 okt 2008, 17:32

Problem s argumentom funkcie v C

Príspevok od používateľa tomy72 »

potreboval by som poradit pri praci s multimediami lebo mam spravit program ktory prehrava videa a pesnicky zastavuje ich atd... v podstate taky prehravac len jednu vec na tom neviem a neviem na to prist....na zaciatku musim zadat s klavesnice nazov mp3-ky alebo videa ktore chcem prehrat a neviem ako mma do prikazu :

mciSendStringA("play mys3.mpeg", 0, 0, 0);

spravit to aby som si tam mohol sam zadat nazov videa alebo mp3 ktore chcem prehrat, lebo takto mi to prehrava iba vopred naprogramovane video. myslim ze to bude cez argument funkcie len neviem ako to dat do tohto prikazu namiesto toho nazvu videa. dakujem.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Problem s argumentom funkcie v C

Príspevok od používateľa chrono »

A ako máš urobené to načítanie názvu súboru z klávesnice?
tomy72
Light Expert
Light Expert
Príspevky: 52
Registrovaný: 25 okt 2008, 17:32

Re: Problem s argumentom funkcie v C

Príspevok od používateľa tomy72 »

int main(int argc, char argv)

no nejak takto som rozmyslal...spustalo by sa to cez prikayovz riadok
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Problem s argumentom funkcie v C

Príspevok od používateľa chrono »

Tak tam skontroluj, či si zadal dosť parametrov, či ten súbor existuje a potom namiesto toho názvu použiješ argv[1] (a to isté aj pri tej kontrole, či ten súbor existuje).
tomy72
Light Expert
Light Expert
Príspevky: 52
Registrovaný: 25 okt 2008, 17:32

Re: Problem s argumentom funkcie v C

Príspevok od používateľa tomy72 »

takze vlastne to bude takto?

mciSendStringA("play argv[1] ", 0, 0, 0);

+ ta kontrola?

no spravil som to tak ale nejde mi to ked to pustim cez prikazovy riadok tak mi to neormalne nabehne ale nic mi to neprehraje tu je aj cely program
// 25c.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#pragma comment( lib, "winmm.lib" )
#include <stdio.h>
#include <windows.h>
#include <conio.h>

int main(int argc,int argv[])
{
char menu,z,pIn1,pIn2;

/* osetrenie vstupu */
if (argc != 3) {
printf("usage: zadanie name_of_file\n");
return 1;
}
pIn1=argv[1];
if (NULL == pIn1) {
printf("Neviem otvorit subor %s na citanie\n", argv[1]);
perror("-- ");
return 1;
}

pIn2=argv[2];
if (NULL == pIn2) {
printf("Neviem otvorit subor %s na citanie\n", argv[2]);
perror("-- ");
return 1;
}
printf("Menu \na) prehranie videa\nb) prehranie skladby\n");
menu=getch();

if(menu=='a') //video
{
printf("\n");
printf("Play: 1\n");
printf("Pause: 2\n");
printf("Stop: 3\n");
z=getch();

if (z=='1'){
mciSendStringA("play argv[1]", 0, 0, 0);
z=getch();
}
if (z=='2'){
mciSendStringA("pause argv[1]", 0, 0, 0);
z=getch();
}
if (z=='3'){
mciSendStringA("stop argv[1]", 0, 0, 0);
z=getch();
}
}
if(menu=='b') //audio
{
printf("\n");
printf("Play: 1\n");
printf("Pause: 2\n");
printf("Stop: 3\n");
z=getch();
if (z=='1'){
mciSendStringA("play argv[2]", 0, 0, 0);
z=getch();
}
if (z=='2'){
mciSendStringA("pause argv[2]", 0, 0, 0);
z=getch();
}
if (z=='3'){
mciSendStringA("stop argv[2]", 0, 0, 0);
z=getch();
}
}
getch();
return 0;
}
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Problem s argumentom funkcie v C

Príspevok od používateľa chrono »

Budeš musieť použiť nejakú funkciu na spájanie reťazcov, alebo pre formátované reťazce (niečo ako sprintf ale bolo by vhodné, aby to výsledný reťazec automaticky alokovalo; zdá sa mi, že vo WinAPI taká funkcia je, ale nechce sa mi hľadať).

Takže je dosť možné, že tam taká funkcia nie je a teda budeš musieť ten reťazec alokovať ty (ale použiť malloc + strlen nie je až tak zložité).
tomy72
Light Expert
Light Expert
Príspevky: 52
Registrovaný: 25 okt 2008, 17:32

Re: Problem s argumentom funkcie v C

Príspevok od používateľa tomy72 »

diky uz som to spravil :wink:
Napísať odpoveď