Forum » Programiranje » Pomoč pri C-ju
Pomoč pri C-ju
demokedes ::
Pozdravljeni,
matram se neki programiranja v C-ju. Pa bi prosil nekoga, ki vsaj malo obvlada C, če bi lahko prosim mi spisal en preprost programčič, ki sprejme dva niza kot parameter in potem recimo vsakega posebej zapiše v eno spremenljivko. za nekoga, ki vsaj malo obvlada C, verjamem, da to ne bo problem.
Aja prosil pa bi ga, da objavi kodo.
Že vnaprej se najlepše zahvaljujem.
Rok
matram se neki programiranja v C-ju. Pa bi prosil nekoga, ki vsaj malo obvlada C, če bi lahko prosim mi spisal en preprost programčič, ki sprejme dva niza kot parameter in potem recimo vsakega posebej zapiše v eno spremenljivko. za nekoga, ki vsaj malo obvlada C, verjamem, da to ne bo problem.
Aja prosil pa bi ga, da objavi kodo.
Že vnaprej se najlepše zahvaljujem.
Rok
Imortales ::
#include
void main( int argc, char *argv[], char *envp[]) //
{
if (argc == 3)
{
char *str1 = argv[1];
char *str2 = argv[2];
cout << str1 << endl;
cout << str2 << endl;
}
}
Evo. Zalaufaš v konzoli (za imenom programa napišeš dva niza).
argc ti je število argumentov (vsi argumenti dobijo vrednost pri zagonu)
argv je polje nizov argumentov (1. argument je ime programa),
2. in 3. argument (indeksa 1 in 2) pa sta niza.
void main( int argc, char *argv[], char *envp[]) //
{
if (argc == 3)
{
char *str1 = argv[1];
char *str2 = argv[2];
cout << str1 << endl;
cout << str2 << endl;
}
}
Evo. Zalaufaš v konzoli (za imenom programa napišeš dva niza).
argc ti je število argumentov (vsi argumenti dobijo vrednost pri zagonu)
argv je polje nizov argumentov (1. argument je ime programa),
2. in 3. argument (indeksa 1 in 2) pa sta niza.
To sporočilo se bo samo uničilo čez 5 sekund.
Vesoljc ::
@imortales
če bi biu težak bi te opomnu da je reku v c-ju, ne v c++, kajti cout ipd. je domena c++ jezika... v c-ju uporabljamo printf...
ampak nism težak
če bi biu težak bi te opomnu da je reku v c-ju, ne v c++, kajti cout ipd. je domena c++ jezika... v c-ju uporabljamo printf...
ampak nism težak
Abnormal behavior of abnormal brain makes me normal...
demokedes ::
Uh pa sej jest tud nisem težak, samo ker se jest nisem nikoli ukvarjal s C++ res ne vem, kaj naj bi pomenil tale cout in pa endl. Če se da komu odgovorit, bi bil zelo vesel, oziroma preprogramirati program, ki ga je opisal Imortales, v pravi C-jevski program. v vsakem primeru, se vama pa zahvaljujem za vajino pomoč.
lp
Rok
lp
Rok
mile ::
int main(int argc, char *argv[])
{
if (argc == 3)
{
char *str1 = argv[1];
char *str2 = argv[2];
printf("%s\n",str1);
printf("%s\n",str2);
}
return EXIT_SUCCESS;
}
sam ne me držat za besedo, že neki časa nisem povohal C-ja
Vesoljc ::
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 1
#endif
// kot veš lahko exe programe zaženeš z določenimi parametri
// primer proggy.exe text1 text2
// ko to nardiš, se ta dva parametra (text1,text2) preneseta v polje (vsak na svoj index) na katerega kaže pointer char* argv
// argc pa je število parametrov, ki so bili podani, s tem, da se ime proggy-ja (progy.exe) šteje tudi kot "parameter", zato je tam if(argc == 3), ker so v biti trije parametri
int main(int argc, char *argv[])
{
// torej preverimo, če smo res podali dva parametra
if (argc == 3)
{
// if true, v spremenljivko str1 vpišemo tisto kar se nahaja v polju z indexom 1 (index 0 je proggy.exe ), v str2 pa vsebino z indexom 2
char *str1 = argv[1];
char *str2 = argv[2];
// funkcija printf izpusuje formatiran tekst, %s pomeni da bomo izpisali niz (string), zato po koncu "xxx" podamo še spremenljivke, ki bi jih radi izpisali , \n pa pomeni da gremo v novo vrsto
printf("%s\n",str1);
printf("%s\n",str2);
}
// ker smo main funckijo deklarirali kot int (torej vrne tip int) moramo na koncu nekaj vrniti, tukaj vrnemo ene vrste alias (kao konstanta), ki smo ga zgoraj definirali kot 1
return EXIT_SUCCESS;
// lahko tudi return 1;
}
Abnormal behavior of abnormal brain makes me normal...
demokedes ::
No ne bom vam dal še miru. Zdej sem mal spremenil svoj program. Želel sem ,da mi program vrne vrednos ena, če sta parametra enaka, in vrednost dva,če sta parametra različna. Kokr sem preiskusil program preverja samo prvo črko besede. Če dam rečimo rok in kor, je različno, če dam pa rok in rak, je pa isto. Koda programa je takale:
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 1
#endif
#include
int main(int argc, char *argv[])
{
char *str1 = argv[1];
char *str2 = argv[2];
if (argc == 3)
{
printf("%s\n",str1);
printf("%s\n",str2);
}
if(*str1==*str2)
{
printf("1\n");
}
else
{
printf("2\n");
}
return EXIT_SUCCESS;
}
Kaj sem ga polomil?
Že vnaprej hvala za pomoč.
lp
Rok
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 1
#endif
#include
int main(int argc, char *argv[])
{
char *str1 = argv[1];
char *str2 = argv[2];
if (argc == 3)
{
printf("%s\n",str1);
printf("%s\n",str2);
}
if(*str1==*str2)
{
printf("1\n");
}
else
{
printf("2\n");
}
return EXIT_SUCCESS;
}
Kaj sem ga polomil?
Že vnaprej hvala za pomoč.
lp
Rok
Fury ::
uporabi strcmp funkcijo za primerjanje.. tisto kar si ti naredu primerja samo prvo crko (dereferenca pointer do arraya in dobi en byte samo kar je prva crka) ce ti strcmp vrne 0 potem sta isti.
demokedes ::
Uh sam problem je v tem, ker te funkcije strcmp nesmem uporabit. Lih to naj bi bil smisel tega programa, da nadomestim to funkcijo.
lp
Rok
lp
Rok
mile ::
z eno zanko greš čez oba niza in preverjaš
- crki, ali sta enaki
- ali smo pri koncu
če so vse črke enake in hkrati prideš do konca, potem sta enaka, drugače ne
- crki, ali sta enaki
- ali smo pri koncu
če so vse črke enake in hkrati prideš do konca, potem sta enaka, drugače ne
TBit ::
Da ne bo ostalo samo pri besedah.
int i=0,enaka = 1;
while(*(str1+i) != '\0' || *(str2+i) != '\0'){
if(*(str1+i) != *(str2+i)) {
enaka = 0;
break;
}
i++;
};
if(enako)
.
.
.
int i=0,enaka = 1;
while(*(str1+i) != '\0' || *(str2+i) != '\0'){
if(*(str1+i) != *(str2+i)) {
enaka = 0;
break;
}
i++;
};
if(enako)
.
.
.
demokedes ::
Aha no program je bilo treba mal spremenit, ampak zdej pa deluje. Fora je bla v unih zavitih oklepajih, pa podpičjih, ampak sem spremenu d adela. Hvala
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 1
#endif
#include
int main(int argc, char *argv[])
{
char *str1 = argv[1];
char *str2 = argv[2];
if (argc == 3)
printf("%s\n",str1);
printf("%s\n",str2);
int i=0;
int enaka = 1;
while(*(str1+i) != '\0' || *(str2+i) != '\0') {
if(*(str1+i) != *(str2+i)) {
enaka = 0;
break;
}
else {
i++;
}
};
if(enaka==1)
printf("Besedi sta enki.\n");
else
printf("Besedi nista enaki.\n");
return EXIT_SUCCESS;
}
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 1
#endif
#include
int main(int argc, char *argv[])
{
char *str1 = argv[1];
char *str2 = argv[2];
if (argc == 3)
printf("%s\n",str1);
printf("%s\n",str2);
int i=0;
int enaka = 1;
while(*(str1+i) != '\0' || *(str2+i) != '\0') {
if(*(str1+i) != *(str2+i)) {
enaka = 0;
break;
}
else {
i++;
}
};
if(enaka==1)
printf("Besedi sta enki.\n");
else
printf("Besedi nista enaki.\n");
return EXIT_SUCCESS;
}
demokedes ::
Pozdravljeni,
Ne bom vam dal še miru. spet mam eno težavo s parametri. Poglejte, recimo d aimam program in ko ga poženem mu podam še eno število kot parameter. Če prav razumem, se te številka spravi kot spremenljivka cahr. Jest bi pa sedaj to številko rad uporabil v svojem programu. Torej rad bi jo uporabil kot integer. Kako torej spremenim iz char v int. Neki sem sicer našel, ampak tisto mi ne spremeni prav. Rad bi da mi vrednos 8 iz chara spremeni v vrednost 8 int
#include
int main(int argc, char *argv[]) {
char *str1=argv[1];
int stevilo=*str1;
int vsota;
vsota=1+stevilo;
printf("%d\n", vsota);
}
Tuki je recimo primer, kako bi rad da bi delovalo, ampak ta program ne deluje prav, ker ne konvertira prav. Rad bi recimo, da se mis tevilo ki sem ga vnesel poveca za 1 in se izpise.
Kaj storiti?
Že vnaprej se vam zahvaljujem za odgovore ter vam želim še vnaprej lep dan.
lp
Rok
Ne bom vam dal še miru. spet mam eno težavo s parametri. Poglejte, recimo d aimam program in ko ga poženem mu podam še eno število kot parameter. Če prav razumem, se te številka spravi kot spremenljivka cahr. Jest bi pa sedaj to številko rad uporabil v svojem programu. Torej rad bi jo uporabil kot integer. Kako torej spremenim iz char v int. Neki sem sicer našel, ampak tisto mi ne spremeni prav. Rad bi da mi vrednos 8 iz chara spremeni v vrednost 8 int
#include
int main(int argc, char *argv[]) {
char *str1=argv[1];
int stevilo=*str1;
int vsota;
vsota=1+stevilo;
printf("%d\n", vsota);
}
Tuki je recimo primer, kako bi rad da bi delovalo, ampak ta program ne deluje prav, ker ne konvertira prav. Rad bi recimo, da se mis tevilo ki sem ga vnesel poveca za 1 in se izpise.
Kaj storiti?
Že vnaprej se vam zahvaljujem za odgovore ter vam želim še vnaprej lep dan.
lp
Rok
Imortales ::
Probaj uporabit funkcijo atoi (mislim da je c-jevska).
int stevilo = atoi(str);
Če se ne motim moraš vključit stdlib.h
int stevilo = atoi(str);
Če se ne motim moraš vključit stdlib.h
To sporočilo se bo samo uničilo čez 5 sekund.
LeQuack ::
int main(int argc, char *argv[])
{
int stevilo;
sscanf(argv[1], "%d", &stevilo);
return 0;
}
To je vsa umetnost :)
demokedes ::
mam še eno vprašanje glede c-ja.
Poglejte, predstavljajte si, da imam neko spremenljivko tipa char. char test[10]
In zdej mam recimo eno zanko, v kateri pod dolocenimi pogoji vpisujemo na vsako mesto tega chara dolocen znak. A je mogoce, da bi recimo na doloceno mesto test[i] dal prazen prostor. In potem ko bi izpisal to spremenljivko, bi bilo tm prazno oziroma ze naslednji znak od test[i+1].
Ce ima kdo kakrsnokoli idejo, kako bi to naredil, bi bila ideja vec kot dobrodošla.
Že vnaprej se vam zahvaljujem za odgovore.
lp
Rokj
Poglejte, predstavljajte si, da imam neko spremenljivko tipa char. char test[10]
In zdej mam recimo eno zanko, v kateri pod dolocenimi pogoji vpisujemo na vsako mesto tega chara dolocen znak. A je mogoce, da bi recimo na doloceno mesto test[i] dal prazen prostor. In potem ko bi izpisal to spremenljivko, bi bilo tm prazno oziroma ze naslednji znak od test[i+1].
Ce ima kdo kakrsnokoli idejo, kako bi to naredil, bi bila ideja vec kot dobrodošla.
Že vnaprej se vam zahvaljujem za odgovore.
lp
Rokj
TESKAn ::
hm, demokles, naredi si eno zanko, ki ti bo, če bo naletela na prazen prostor, prestavila vse naslednje znake za enega nazaj.
V stilu:
for(i=0;i<=10;i++)
{
if(test[i]==' ')
{
for(j=i;j<=10;j++)
{
test[j]=test[j+1];
}
}
}
Mislim, da bi to moglo delovat...je že nekaj časa, odkar sem nazadnje se z Cjem igral...
V stilu:
for(i=0;i<=10;i++)
{
if(test[i]==' ')
{
for(j=i;j<=10;j++)
{
test[j]=test[j+1];
}
}
}
Mislim, da bi to moglo delovat...je že nekaj časa, odkar sem nazadnje se z Cjem igral...
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.
ki jo je prav v ta namen nosil s seboj.
Zgodovina sprememb…
- spremenil: TESKAn ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C (Izračun povprečja)Oddelek: Programiranje | 1629 (1263) | joze67 |
» | C strukture, kazalci naloga pomocOddelek: Programiranje | 1474 (1369) | DavidJ |
» | C - pomočOddelek: Programiranje | 1461 (1201) | Thagirion |
» | [c++]malo pozabljene osnove ali drugačen način v linux?Oddelek: Programiranje | 1591 (1059) | 'FireSTORM' |
» | [C++][Naloga] Tekstovne datoteke, realna številaOddelek: Programiranje | 4059 (3675) | Gundolf |