---
title: "endast bokstäver?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/104307-endast-bokstäver"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Fredde Mannen"
published: "2004-05-25T13:21:34.000Z"
updated: "2004-05-26T07:52:43.000Z"
replies: 8
views: 310
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/104307-endast-bokstäver"
---

# endast bokstäver?

## #1 — Fredde Mannen, 2004-05-25T13:21Z

Hur läser jag in enklast en teckensträng i C, och kollar så att den endast innehåller Aa-Zz?  :q 

jag bråkar och bråkar med att köra vektorer i char format och kollar med ett skapat macro. 

men det vill inte funka, eller snarare det funkar inte alls..

Permalänk: https://www.webforum.nu/p/104307

## #2 — Engine^, 2004-05-25T14:22Z

Du kanske ska börja spana lite på regular expressions...

[CAtlRegExp Class](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfcatlregexp.asp).

Permalänk: https://www.webforum.nu/p/1353698

## #3 — juventus1, 2004-05-25T14:48Z

Annars tror jag att isalpha (som finns i ctype.h) löser ditt problem.

Permalänk: https://www.webforum.nu/p/1353709

## #4 — Fredde Mannen, 2004-05-25T15:38Z

> **juventus1 skrev:**
>
> Annars tror jag att isalpha (som finns i ctype.h) löser ditt problem.

Jo jag hade som tänkt mig det, men det funkade inte, jag vet inte om det beror på att min inläsning var lite uppfuckad eller nåt.

Om jag läser in en textsträng i en vektor kallad *str* som vi kan ha gett storleken 50. 

hur kollar jag igenom denna vektor och ger ett felmeddelande med en ny chans att fylla i den, dvs om något annat tecken än Aa-Zz påträffas? :q

har bråkat som tusan med det.. ibland blir det rätt och ibland inte.. vad beror det på? (fråga inte efter kod, den brände jag upp).

Permalänk: https://www.webforum.nu/p/1353737

## #5 — PeW, 2004-05-25T15:58Z

Det var i C, eller hur?

```

char ok,*ptr;
ok = 1;
ptr = str;
while(*ptr++){
    if(*ptr<'A' || *ptr>'Z')
      if(*ptr<'a' || *ptr>'z')
          ok = 0;
}
...
...
if(!ok)
   _getNewString();
```

Typ  ;)

Permalänk: https://www.webforum.nu/p/1353744

## #6 — PeW, 2004-05-25T19:11Z

Bara ett exempel

```
#include <stdio.h>

char checkLetters(char *str)
{
	while(*str){
		if(*str < 'a' || *str > 'z')
			if(*str < 'A' || *str > 'Z')
			return 0;
	 str++;
	}

   return 1;
}

int main(int argc,char *argv[])
{
  char str[50];
 do {
	printf("Put in a string");
	scanf("%s",&str);
  }while(!checkLetters(str));
return 0;
}
```

red:
Editerade bort slarvet som påpekas nedan.

Permalänk: https://www.webforum.nu/p/1353825

## #7 — Sang-drax, 2004-05-25T20:53Z

Uhh, den koden kollar ju ett tecken. Du returnerar ju från funktionen garanterat redan första gången.
Dessutom missar du ju det första tecknet iom att du ökar pekaren det första du gör i loopen.

Så här kan man göra:

```
bool checkLetters(char *str)
{
    while (isalpha(*str++));
    return *(str-1) == 0;
}
```

Man går igenom strängen tills man hittar det första tecknet som inte är en bokstav och kollar om det är slutet på strängen.

Permalänk: https://www.webforum.nu/p/1353883

## #8 — PeW, 2004-05-25T21:49Z

Så sant, så sant... 

Har ivf editerat mitt inlägg till en fungerande variant.

Permalänk: https://www.webforum.nu/p/1353918

## #9 — Fredde Mannen, 2004-05-26T07:52Z

tack för era svar.. :) ser att jag har arbetat åt helt rätt håll, men gjort lite flummiga misstag här och där.. :D

Permalänk: https://www.webforum.nu/p/1354024

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/104307-endast-bokstäver
