Hej Det är svårt att se bara så där... Till att börja med skall du i alla fall ha en avslutande "" i arrayen. Mitt störtsta problem är while satsen. Det är meningen att jag ska kolla om ordet jag skrev in finns med i arrayen. Finns ordet så avslutas lopen.  Det du skriver i andra jämförelsen är att pekar s på 0 - dvs är minnesadressen till **s 0, och det blir den aldrig. Hej Niklas. Tack för alla tips. Har skrivit om koden lite nu. Du kunde behållt pekaren: Problemet ligger i att när pekaren har gått igenom alla fält. Så går den ytterliggare ett steg, dvs så den hamnar utananför minessadressen. Dvs den går ett extra varv i loopen. Som väntat...jämför textsträng med fält
    
    
Jag jämför en textsträng med ett fält enligt nedanstående kod.
Får dock inte det hela att fungera. 
<code>
int main (void){
char *s, ord[20], *reserv[] = {"auto", "break", "case", "char", "const",  "volatile", "while"};
	printf("Skriv ett ord: ");
	fflush(stdin);
	gets(ord);      //läs in textsträngen
	s = *reserv;   //peka på försat ellementet
	while ((strcmp (ord, s) != 0) || (*s !='\0')) {   //är ord lika med s eller har vi kommit till NULL
		s++;	//stega ett steg framåt
	}
		
	if (strcmp (ord, s) == 0)   /fanns ordet med i fältet ? JA
		printf("Du har skrivit ett reserverat ord");
	else           //nej
		printf("Inget reserverat ord");
			
	
while (!KeyHit()){;}   
return 0;
}
</code>
har ni tips på hur jag får det att fungera?Sv: jämför textsträng med fält
    
    
Sedan bör 
if (strcmp (ord, s) == 0)
nog istället vara
if (*s!=0)
av effktivitetsskäl.
--
Märkte ett stort fel: s skall vara av typen char **
/Niklas JanssonSv: jämför textsträng med fält
    
    
Tyvärr så fungerar inte lopen, lopen ska även avslutas då vi har kollat igenom alla fält! Har du några tips på hur jag ska ändra i koden?
while ((strcmp (ord, *s) == 0) || (*s !=0)){
		s++;	
          }
Om jag skriver på följadne sätt så avbryts loopen om mitt ord som jag skriver in finns med i arrayen
while (strcmp (ord, *s)){
		s++;	
	}
Men hur gör jag för att få med (*s !=0) dvs om jag har gått igenom hela arrayen och ordet inte fanns med ska lopen avslutas.Sv: jämför textsträng med fält
    
    
while ((strcmp (ord, *s) == 0) || (**s !=0))
    s++; 
(Jag skulle nog iofs använt en for-sats...)
Sen måste du naturligtvis ha med tomma strängen sist.
 *reserv[] = {"auto", "break", "case", "char", "const",  "volatile", "while", ""}; 
/Niklas JanssonSv: jämför textsträng med fält
    
    
<code>
int main (void){
char ord[20], *reserv[] ={"auto", "break", "case", "char", "const", ""};
int i;
printf("Skriv ett ord: ");
fflush(stdin);
gets(ord);
for(i=0; *reserv[i]; i++) {
   if(!strcmp(ord, reserv[i]))
   printf("Du har skrivit ett reserverat ord");
}
    printf("Du har inte skrivit ett reserverat ord");
while (!KeyHit()){;}   
return 0;
}
Problemet är nu att skriver jag in ett ord som inte finns med i arrayen får jag följande felmedelande.
Deference of out-of -bounds pointer: 1 bytes past end of array. 
Får för övrigt samma felmedelande om jag skriver ett ord som finns i arrayen. 
Har någon tips på hur jag gör för att modifiera loopen.?Sv: jämför textsträng med fält
    
    
for(p=reserv; **p; p++) 
 
Jag ser inte felet bara så här... 
Prova att skriva ut varje ord en gång i loopen, så ser du när det händer (antagligen sist).
Du bör dessutom ha 
if(!strcmp(ord, reserv[i]))
{
    printf("Du har skrivit ett reserverat ord");
    break;
}
Så bryts den om det inte går rätt till.
Beskriv var felet händer lite noggrannare så kanske det hjälper.
/Niklas JanssonSv: jämför textsträng med fält
    
    Sv: jämför textsträng med fält
    
    
Prova att lägga till ett extra "" på slutet.
Kolla nu när den bryter.
Det är förmodligen ett fel i jämförelsen någonstans. Kan vara att dereferenseringen av pekaren inte är rätt...
Prova med olika varianter på antalet ^.
/Niklas Jansson