Хорошо, поэтому я выполнял задачу кодирования на codewars.com, и задача состояла в том, чтобы взять строку в качестве входных данных и вернуть строку, где вместо букв вместо номера указан алфавит, соответствующий букве.
Все, кроме букв, следует игнорировать.
ex: «aab» вернет «1 1 2»
Между каждым числом, представляющим букву в алфавите, должен быть пробел.
Итак, когда я запускаю этот код в моей IDE (это xcode с использованием c99), все выглядит хорошо, а функция strcmp()
говорит, что 2 строки равны.Веб-сайт, на котором я работаю, использует C11, но я не вижу, что это вызывает ошибку.
Когда я запускаю этот код на веб-сайте с запросами, он проходит несколько тестов, но затем не проходит и пару.Он терпит неудачу, когда входная строка "", и он также терпит неудачу в строке, которую я использовал в приведенном ниже коде, но опять же он не перестает работать, когда я запускаю его на моем ide.
Мои вопросы:
1) Любая идея, что является причиной этой ошибки?
2) Что бы вы сделали по-другому в отношении кода
Спасибо
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
char *alphabet_position(char *text)
{
int i,letter_position;
unsigned long int size = strlen(text);
char *result = malloc(sizeof(int)*size + 1);
char int_string[10];
char temp = ' ';
//If String wasn't blank
if (strcmp(text, "")!=0)
{
for (i=0; i<size-1; i++)
{
//If it is a letter
if (isalpha(text[i]))
{
temp = tolower(text[i]);
if (temp == 'a')
strcat(result, "1");
else
{
letter_position = temp - 'a' + 1;
sprintf(int_string,"%d",letter_position);
strcat(result, int_string);
}
//Print space after letter until the last letter
if (i!=size-2)
strcat(result, " ");
}
}
strcat(result, "\0");
return result;
}
else
{
strcat(result, "\0");
return result;
}
}
int main(void)
{
char *string = alphabet_position("The narwhal bacons at midnight.");
char *expected_output = "20 8 5 14 1 18 23 8 1 12 2 1 3 15 14 19 1 20 13 9 4 14 9 7 8 20";
printf("Your output %s\n", alphabet_position("The narwhal bacons at midnight."));
printf("Expt output %s\n", "20 8 5 14 1 18 23 8 1 12 2 1 3 15 14 19 1 20 13 9 4 14 9 7 8 20");
printf("\n");
printf("your len %lu\n", strlen(alphabet_position("The narwhal bacons at midnight.")));
printf("Expt len %lu\n", strlen(expected_output));
if (strcmp(string, expected_output)==0)
printf("Equal\n");
else
printf("Not equal\n");
return 0;
}