#c
#c
Вопрос:
Я написал функцию word_pattern, как показано ниже.
Я не получил возвращаемое значение, что не так с кодом?
Ниже приведено обучение codewars.(https://www.codewars.com/kata/5f3142b3a28d9b002ef58f5e/train/c )
#include <stdlib.h>
#include <string.h> //strlen
#include <ctype.h> //islower
char *word_pattern(const char *word) {
int i, j;
int size = strlen(word) ;
char *ans = (char*)malloc(sizeof(char) * (size * 2 ));
char *base = ans;
if (ans == NULL)
{
return NULL;
}
for (i = 0; i < size; i )
{
if (i == 0)
{
*ans = (char)i;
*ans = '.';
/*break;*/ continue;
}
for (j = 0; j < i; j )
{
if ( islower(word[i]) == islower(word[j]) )
{
*ans = (char)j;
*ans = '.';
break;
}
}
if(j == i)
{
*ans = (char)i;
*ans = '.';
}
}
*--ans = '';
return base;
}
Комментарии:
1. Что такое
size
?2.
break;
Входif (i == 0)
завершает внешнийfor
цикл. Вы имели в виду использоватьcontinue
вместо этого?3. Вы ожидаете, что возвращаемое значение будет строкой, заканчивающейся 0? Если это так,
(char)i
когда i равно 0, это'
то, что является терминатором строки. Таким образом, ваше возвращаемое значение будет выглядеть как пустая строка4. @Merrifield вы отмечаете людей с помощью
@
, и они будут автоматически уведомлены.>>
ничего не делает5. @Siguze Извините за мое упущение, я заполнил его.
Ответ №1:
Я не получил возвращаемое значение, что не так с кодом?
Приведенный ниже код устанавливает ans[0]
значение 0, нулевой символ.
if (i == 0) {
*ans = (char)i;
Печать возвращаемого указателя в виде строки ничего не выводит, поскольку строка заканчивается немедленно.
Комментарии:
1. Я намеревался преобразовать цифры в буквы. Как я могу это сделать?
2. @Merrifield Что вы подразумеваете под преобразованием чисел в буквы? Вы имели в виду преобразование числа 512 в строку, содержащую 512?
3. @Shovo >> Вы имели в виду преобразование числа 512 в строку, содержащую 512? ДА.
4. @Merrifield Я написал программу для выполнения преобразования. вы можете проверить ссылку . Для лучшего просмотра я поделился через Pastebin
5. @Shovo Спасибо, но эта страница больше не доступна.