Segmentation fault

Hey everyone, it's been a while since i've posted but good job to everyone who makes this site the best. I'm working on a program that takes in a file with the format: 12, cat, dog, spice, tree, homework, apple, banana, bark, mom, dad, sister, swing

the number in the front of the file represents the number of words behind it.

It puts the words into a dynamically allocated array, then sends to a function where it counts how many vowels each word has and returns the word/words with the most vowels in another dynamically created array. I understand the code (at least i think i do) and i finally finished and hit a seg fault. I'm on the verge of ragein out and i was wondering if someone point me in the right direction. Please no strait answers, it's a school assignment so cheating won't help me in the end. Here's me code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <fstream>
using namespace std;

string * vowelFinder (string *, int);

int main()
{
	int ifileSize, iCount = 0;
	string sfileName, *sPtr, sTemp, *sVowels;

	printf("Enter the file name and extension:");
	getline(cin, sfileName);

	ifstream fhIn;
	fhIn.open(sfileName.c_str());
	if(fhIn.fail())
	{
		printf("Error\n");
		return 0;
	}
	
	fhIn >> ifileSize;
	fhIn.ignore();

	cout << "The file has " << ifileSize << " words!" << endl;
	if(ifileSize <= 0)
	{
		printf("Error\n");
		return 0;
	}
	sPtr = new string[ifileSize];

	getline(fhIn, sTemp, ',');
	while(iCount < ifileSize && !fhIn.eof())
	{
		sPtr[iCount] = sTemp;
		iCount++;
		getline(fhIn, sTemp, ',');
	}
	
	sPtr[iCount] = sTemp;	//fix loop	
	
	for(int i = 0; i < ifileSize; i++)
		cout << sPtr[i] << endl;

	/////////////////////////////////////////////////////

	sVowels = vowelFinder(sPtr, ifileSize);
	
	
	for(int i = 0; i < ifileSize; i++)
		cout << sVowels[i] << endl;

	return 0;

}



string * vowelFinder (string * sPtr, int size)
{
	int vowelCount, counter, high = 0, subIndex = 0;
	int*iPtr = new int[size];
	string sTemp;
	string *vowelHolder = new string[size];
	cout<<"test1";
	for(int i = 0; i < size; i++)
	{	
		counter = 0;
		vowelCount = 0;
		sTemp = sPtr[i];
		while(sTemp[counter] != '\0')
		{	
			switch(sTemp[counter])
			{
				case 'a':
				case 'A':
				case 'e':
				case 'E':
				case 'o':
				case 'O':
				case 'i':
				case 'I':
				case 'u':
				case 'U': vowelCount++;
					 break;
			}
			counter++;
		}
		iPtr[i] = vowelCount;
	}
	
	for(int i = 0; i < size; i++)
	{
		if(iPtr[i] > high)
			high = iPtr[i];
	}

	for(int i = 0; i < size; i++)
	{
		if(iPtr[i] == high)
		{
			vowelHolder[subIndex] = sPtr[i];
			subIndex++;
		}
	}
	

	cout << vowelHolder[0];

	while(vowelHolder[subIndex] != '\0')
	{
		vowelHolder[subIndex] = '$';
		subIndex++;
	}

	for(int i = 0; i < size; i++)
		cout << vowelHolder[i] << endl;
	
	return vowelHolder;

	
}


Never mind i fixed the problem to whoever may see this in the future...
Last edited on
Topic archived. No new replies allowed.