webForumDet fria alternativet

Segmentation Fault

C/C++

2 svar · 210 visningar · startad av niels

Medlem sedan juli 2000212 inlägg
Frågan#1

Jag får meddelandet "Segmentation falut (core dumped)" när jag kör ett test program med följande kod:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

	int x;
	int chars[26];

	for(int i=0; i < 26; i++) {
		chars[i] = 0;
	}
	
	char ch;
	ifstream in;

	in.open("ascii.cc");
	in.get(ch);
	while(!in.fail()) {
		x = ch - 97;
		chars[x]++;
		in.get(ch);
	}
	in.close();
	
	for(int i=0; i < 26; i++) {
		x = 97+i;
		printf("%c", x);
		printf("%10i \n", chars[i]);
	}

	return 0;
	
}

Programmet för en snygg utskrivt fast det blir en liten delay och sedan skrivs felmesset ut...

Vad är det som är fel??

tack!
/Niels Bosma

Medlem sedan maj 20002 993 inlägg
#2

Förutom att du deklarerar 'i' två gånger så funkade koden bra för mig.

Medlem sedan juni 200010 432 inlägg
#3

Vad har du tänkt att denna kod ska göra?

x = ch - 97;
chars[x]++;

Vad händer om ch är mindre än 97 eller större än 123?
Jo... fel, fel, fel... ;)

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)