Я пишу программу для преобразования текста из файла в piglatin. Это мой main ()
int main()
{
FILE* filePtr;
char inputString[25];
char pLatinString[25];
char* Pstringpoint;
if ((filePtr = fopen("PigLatinIN.txt", "r")) == NULL)
{
printf("File could not be opened \n");
}
else
{
while(fgets(inputString, 25, filePtr)!= NULL)
{
Pstringpoint = convertToPigLatin(inputString, pLatinString);
while(*Pstringpoint != '\0')
{
printf("%c", *Pstringpoint++);
}
}
}
, это для назначения, поэтому мой переход к функции piglatin должен иметь этот заголовок.
char* convertToPigLatin(char* engStr, char* pLatinStr)
{
char completesuffix[25];
int length = 0;
char rSuffix[10];
char vowels[6] = {"aeiou"};
int i = 0;
while (engStr[length] != '\0')
{
length++;
}//setting int length equal to the length of the input string.
while (i < length)
{
for (int j = 0; j < 6; j++)
{
//checking if the lead character is a consonant
if (engStr[0] != vowels[j])
{
rSuffix[j] = "-";
rSuffix[j+1] = engStr[0];
}
//checking if there is a string of consonants
else if ((i != 0)&&(engStr[i] != vowels[j]))
{
rSuffix[j] = engStr[i];
}
//appending ay to consonant leading string
else if ((engStr[i] == vowels[j]) && (engStr[i - 1] != vowels[j]))
{
rSuffix[j] = "a";
rSuffix[j + 1] = "y";
rSuffix[j + 2] = "\0";
strcat(engStr, rSuffix);
}
//string starting with vowel
else if (engStr[0] == vowels[j])
{
rSuffix[j] = "-";
rSuffix[j + 1] = "w";
rSuffix[j + 2] = "a";
rSuffix[j + 3] = "y";
rSuffix[j + 4] = "\0";
strcat(engStr, rSuffix);
}
}//for loop that goes thru the vowel array
i++;
}//while loop to go through the input string
for (int k = 0; k < 25; k++)
{
pLatinStr[k] = engStr[k];
}
return pLatinStr;
}
содержимое файла piglatin.txt выглядит следующим образом.
go
placidly
amid
the
noise
and
haste
and
remember
what
peace
there
may
be
in
silence
всякий раз, когда я пытаюсь запустить программу, я получаю ошибку повреждения стека вокруг суффикса переменной, и я не знаю, что я делаю неправильно.