повреждение стека в функции C - PullRequest
0 голосов
/ 01 мая 2020

Я пишу программу для преобразования текста из файла в 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

всякий раз, когда я пытаюсь запустить программу, я получаю ошибку повреждения стека вокруг суффикса переменной, и я не знаю, что я делаю неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...