Я пытаюсь написать программу для piglatin. Я не получал результат, которого ожидаю.Проблема с привязкой строки к программе C
возьмите первую букву слова «word» и добавьте это письмо в конец слова с добавлением «ay» к концу.
Ввод: Даррин, что вы делаете с 500 и 100?
Выход: arrin, hatway reaay ouyay oingday ithway 500 ndaay 100?
Ожидаемый результат: arrinday, hatway reay ouyay oingday ithway 500 дн. 100?
Что с выходом: Первое слово не добавляется ау
Поскольку я добавлением «ау», мне нужно устранить лишние «а», если слово начинается с или конец с «а». Мне просто нужно добавить ay в конец вместо первой буквы + ay. Например: Вход Alex и allen равны 500. Выход должен быть lexay nday llenay
Также, если начальная буква не является алфавитом, тогда мы должны вернуть то же слово.
Пожалуйста, помогите мне решить эту
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
static char inputBuffer[100];
static char outputBuffer[100];
void translate (void)
{
char bufferValue;
char firstLetter;
int j = 0, k = 0, m = 0;
printf("\n");
while (j < (sizeof(inputBuffer) - 1))
{
bufferValue = inputBuffer[j];
if (((bufferValue >= 'A') && (bufferValue <= 'Z')) || ((bufferValue >= 'a') && (bufferValue <= 'z')))
{
if (j == 0)
{
firstLetter = bufferValue;
}
else if (inputBuffer[j-1] == ' ')
{
firstLetter = bufferValue;
}
else
{
printf("%c", bufferValue);
outputBuffer[m] = bufferValue; m++;
}
}
else if ((bufferValue == ' ') && !(
((inputBuffer[j-1] < 'A') ||
((inputBuffer[j-1] > 'Z') && (inputBuffer[j-1] < 'a')) ||
(inputBuffer[j-1] > 'z'))))
{
printf("%cay%c", firstLetter, bufferValue);
outputBuffer[m] = firstLetter; m++;
outputBuffer[m] = 'a'; m++;
outputBuffer[m] = 'y'; m++;
outputBuffer[m] = bufferValue; m++;
firstLetter = ' ';
}
else
{
printf("%c", bufferValue);
outputBuffer[m] = bufferValue; m++;
}
j++;
}
printf("\n final output: %s",outputBuffer);
return;
}
int main(void)
{
printf("enter the string\t");
fflush(stdin);
gets(inputBuffer);
printf ("\nInput buffer contents: %s", inputBuffer);
translate();
return 0;
}
Первое наблюдение: 'sizeof' не дает вам' strlen'. –
Вы должны использовать 'isalpha()' и связанные макросы с ''. Вам следует избегать использования глобальных переменных вместо параметров функции. Вы должны убедиться, что вы не переполняете свой выходной буфер. Я не уверен, что вы должны создать для входной строки. «О'Рурк и Гиффен-Хейли вышли в два часа?» (С ведущим пустым и с пунктуацией, как '' 'и' -' в словах и '?' в конце). Я думаю, я ожидал бы изолировать «слова», а затем разобраться с свинцово-латинской трансформацией каждого слова. –
вы пробовали отладчик? –