webForumDet fria alternativet

Segmentation Fault

2 svar · 208 visningar · startad av niels

nielsMedlem sedan juli 2000215 inlägg
#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

Alpha IIMedlem sedan maj 20002 579 inlägg
#2

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

PeWMedlem sedan juni 20006 839 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... ;)

122 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
119 ms — hämta tråd, inlägg och bilagor (db)