» »

pomoč pri C

pomoč pri C

fur80 ::

Prosil bi za pomoč pri programu iz C-ja. Moram naredit nalogo, c smo se učili pred 12 leti v srednji šoli.
Rad bi spremenil male crke v velike ampak to nekako ne dela. :)
Niz mora biti poljubno dolg, amprak mi ga ne rata spravit v funkcijo.
Če se komu da malo pogledat.

#include <stdio.h>
#include <string.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
velikeCrke(char* line){
int i;
        for(i=0;i<strlen(line);i++){
                if((line[i]<='a')&&(line[i]>='a'))
                line[i]=line[i]+'A'-'a';
        }
}

int main () {
char *line = readline ("# ");
        printf("original string: %s\n", line);
        printf("Velikost: %d",strlen(line));
        printf("Druga crka: %c",line[i]);
        printf("Veliko : %s", velikeCrke(line));
        void free(void *line);
return 0;
}

NavadniNimda ::

Narobe imaš postavljen pogoj v IF stavku, saj je pogoju izpolnjeno le za 'a'.
Sicer pa obstaja strupr () funkcija.

fur80 ::

Tnx, samo problem imam že pri prenosu podatkov v funkcijo.
Prav tako mi ne napiše druge črke, če bi dal tam npr. printf("Druga crka: %c",line[2]);

Povežem pa tako: gcc -Wall -lreadline -oread read.c

Napako, ki javi prevajalnik:
read.c:18: error: for each function it appears in.) (namesto i sem dal 2)
read.c:19: warning: format '%s' expects type 'char *', but argument 2 has type 'int'

Zgodovina sprememb…

  • spremenil: fur80 ()

fur80 ::

Povežem pa tako: gcc -Wall -lreadline -oread read.c

Napako, ki javi prevajalnik:
read.c:18: error: for each function it appears in.) (namesto i sem dal 2)
read.c:19: warning: format '%s' expects type 'char *', but argument 2 has type 'int'

napsy ::

        printf("Druga crka: %c",line[i]);
Ko kot argument navedeš line[i], prevajalnik pričakuje definirano spremenljivko i, ki bo v tvojem primeru veljala kot indeks za tabelo. Ti pa znotraj main() funkcije nimaš definirane spremenljivke i. Vendar ker želiš izpisati drugo črko je dovolj, da namesto spremenljivke i uporabiš kar vrednost 1.
        printf("Veliko : %s", velikeCrke(line));
printf() pričakuje kot drugi argument tip "char *", vendar funkcija veliketCrke() vrne tip int (če v C-ju ni navedenega izhodnega tipa, bo C to smatral kot int)
        void free(void *line);
Tukaj si napisal zaglavje funkcije (opis kakšna zgleda funkcija free()) Želel pa si verjetno klicati free(). Klic pa poteka tako, da poleg imena funkcije znotraj oklepajev navedeš njene argumente.
"If you die, you die. But when you live you live. There is no time to waste."

Zgodovina sprememb…

  • spremenil: napsy ()

strictom ::

Ne obvladam C-ja ampak a nebi blo bol preprosto da cel niz shraniš kot ASCII in prišteješ 32(?) da dobiš upper case?
"Violence is the last refuge of the incompetent" - Salvor Hardin

fur80 ::

Moram naredit po tem postopku (tak se glasi naloga :) )
Preberem poljubno dolg niz z funkcijo readln.
Sedaj sem naredil tako:
#include <stdio.h>
#include <string.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
char velikeCrke(char* line){
int i;
        for(i=0;i<=strlen(line);i++){
                if((line[i]<='a')&&(line[i]>='a'))
                line[i]=line[i]+'A'-'a';
        }
}

int main () {
char *line = readline ("# ");
        printf("original string: %s\n", line);
        printf("Velikost: %d",strlen(line));
        printf("Druga crka: %c",line[1]);
        printf("Veliko : %s", velikeCrke(line));
        free(line);
return 0;
}



vendar mi izpiše to:
gcc -Wall -lreadline -oread read.c
------------------------------------------------------
read.c: In function 'main':
read.c:19: warning: format '%s' expects type 'char *', but argument 2 has type 'int'
read.c: In function 'velikeCrke':
read.c:12: warning: control reaches end of non-void function
-----------------------------------------------------
printf("Veliko : %s", velikeCrke(line));
Ne vem kaj bi mogo dat tu sem, da nebi pisal warninga.

Monster ::

hm .. definicija funkcije velikeCrke je napacna, char je ubistvu int in verjetno ti zato jamra ... naj funkcija vrne pointer ... recimo takole

char* velikeCrke(char* line){ ostalo pa isto }
Ka zaboga...

fur80 ::

@Monster
Ej super zaj dela, tam sem v funkcij dal še return(line)

Hvala vsem.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Qt/QML zajem podatkov iz podatkovne baze, dobim samo opise fieldov ter prazne vrednos

Oddelek: Programiranje
71744 (1487) windigo
»

[Qt/C++]problem z Undefined reference na konstanti znotraj razreda

Oddelek: Programiranje
102368 (2038) phantom
»

[C] Sinhronizacija procesov

Oddelek: Programiranje
71149 (1022) Cvenemir
»

c grafika

Oddelek: Programiranje
191008 (753) aaaaa93
»

(c++)kolikokrat se pojavi posamezna črka?

Oddelek: Programiranje
71330 (941) bozjak

Več podobnih tem