---
title: "Personnummer :)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/50354-personnummer"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "fluff"
published: "2002-08-15T02:22:31.000Z"
updated: "2002-08-31T11:11:41.000Z"
replies: 2
views: 318
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/50354-personnummer"
---

# Personnummer :)

## #1 — fluff, 2002-08-15T02:22Z

God morgon !  :birp 

Jag hittade den här tråden -\> <http://www.webforum.nu/showthread.php?s=&threadid=37525>

Och tänkte att jag skulle roa mig med att försöka översätta den till c++ (eftersom jag just börjat med det), trodde att det inte skulle vara sååå stor skillnad på php / c++.

Hursomhelst så lyckades jag inte alls, snöade bara in på säkert helt fel saker.. :-I

Iaf, Hur gör man? :)

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

## #2 — Viktor, 2002-08-15T08:02Z

Det var ju roligt att börja med C++ igen efter några månader utan, svårt var det också att kom in i det :)

Men tillslut så gick det och här är resultatet, provat med 2 riktiga och många felaktiga personnummer och då fungerar den,

```
void CPnrDlg::OnBnClickedButton1()
{
	if(checkPnr("7505051234"))
	{
		MessageBox("Korrekt personnummer");
	}
	else
	{
		MessageBox("Felaktigt personnummer");
	}
}

bool CPnrDlg::checkPnr(char* pnr)
{
	if(strlen(pnr)==10)
	{
		int n(2);
		int tmp(0);
		int sum(0);
		char ch;
		for(int i=0;i<9;i++)
		{
			ch=pnr[i];
			tmp=atoi((char*)&ch)*n;
			tmp>9?sum+=1+(tmp%10):sum+=tmp;
			n==2?n=1:n=2;
		}
		return!((sum + atoi(&pnr[9]))% 10);
	}
	return false;
}
```

/Viktor

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

## #3 — Sang-drax, 2002-08-31T11:11Z

> **Viktor skrev:**
>
> ```
> 
> ch=pnr[i];
> tmp=atoi((char*)&ch)*n;
> ```

Det där är farliga saker som ger svårhittade buggar

bättre att skriva så här:

```
tmp = ch - '0';
```

 
eller om 100% portabilitet önskas

```
char ch[2];
ch[1] = '\0';
....
ch[0] = pnr[i];
tmp = atoi(ch)*n;
```

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/50354-personnummer
