Gå til innhold

Hjelp en C-noob :)


Anbefalte innlegg

Skrevet

Hei, har problemer med en _svært_ enkelt C-program. Bruker IDEen Netbeans til mitt forbruk.

 

Koden:

#include <stdio.h>

int main(int argc, char *argv[])
{
int x;

  // printf("%d\n",argc);
for (x=0; x<argc; x++)
	if (x>0)
		char msg = argv[x];
	printf("Input: %s\n",msg);
return 0;
}

 

Greia er at programmet skal lese inn et argument fra main, så lagre denne i variablen msg og så skrive ut. Ja, vet jeg kan skrive ut args direkte, men det er ikke oppgaven! Skjønner ikke hva som er feil.

Får disse feilmeldingene:

Helloworld.c: In function `main':

Helloworld.c:22: error: parse error before "char"

Helloworld.c:22: warning: initialization makes integer from pointer without a cast

 

takker for hjelp!

Videoannonse
Annonse
Skrevet

if (x>0)
		char msg = argv[x];
	printf("Input: %s\n",msg);

 

Her er det 2 feil

For det første, så er msg av typen char, og ikke char* og dessuten så faller denne variablen ut av scope før den brukes i neste linje.

Skrevet

Du mangler endel curly brackets, i tillegg til at du har bommet på strenghåndteringen.

 

Dette kompilerer og kjører ihvertfall:

 

int main(int argc, char *argv[]) {
 int x;

 for (x=0; x<argc; x++) {
if (x>0) {
  char *msg = argv[x];
  printf("Input: %s\n",msg);
}
 }
 return 0;
}

 

Werner

Skrevet

Du kan forresten omgå if-sjekken ved å la for-løkken starte ved x = 1. I tillegg kan du skrive printf("Input: %s\n", argv[x]) i stedet for å definere en peker som peker til strengen i linja før. Dette er selvsagt en smakssak, men det blir litt unødvendig når du uansett bare bruker argv[x] én gang.

Skrevet

En del av oppgaven er å tilordne argumentet man får i main til en ny variabel. Det med if-en er jeg klar over :) Egentlig er en del av koden unødvendig, men skulle sjekke forskjellige ting.

Skrevet

Trenger litt mer hjelp:

 

char strgetc(char s[], int pos);

int main(int argc, char** argv) {
char a;
int b;
printf("Skriv først et ord, så et tall som angir posisjonen til bokstaven du vil ha. Ordet og tallet skal ha mellomrom mellom seg:\n");
scanf("%s %d", &a, &b);
strgetc(a, b);


return (EXIT_SUCCESS);
}

char strgetc(char s[], int pos){
	//char *ke = "f";
	printf("lolfest");
	//return *ke;
}

 

Skal gjøre noe mer i funksjonen strgetc (skrive ut tegnet som ligger i pos i teksten som angis). Problemet er at programmet nå ikke kjører og skjønner ikke hvorfor. Feilmeldingen jeg får er: test.c:21: warning: passing arg 1 of `strgetc' makes pointer from integer without a cast

Skrevet

char* er en peker til en char (eller et array)

Som regel blir dette brukt til strings i C

Det er ikke plass til en string i en char, som er en byte, men minneområdet som char* peker til, kan ha plass til det.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...