Это из задачи Codewars, поэтому я исключу ненужный код из этой функции.В основном, если n <= 1
, мне нужно вернуть пустую строку.
char* sc(int n)
{
if(n > 1) {
//irrelevant code
}
//return strdup("");
return "";
}
Если передаваемое значение равно -1
, когда я использую return "";
, я получаю сообщение "Тест не пройден", но когда яиспользуй return strdup("");
я сдаю тест.Просто интересно, почему это так?
Редактировать: так называется функция.Это только последний тест, который не пройден.
#include <criterion/criterion.h>
#include <string.h>
char* sc(int);
void dotest(int n, const char* expect)
{
char* actual = sc(n);
cr_expect(!strcmp(actual, expect), "Expected: '%s', got: '%s'\n", expect, actual);
free(actual);
}
Test(the_multiply_function, should_pass_all_the_tests_provided) {
dotest(2,"Aa~ Pa! Aa!");
dotest(6, "Aa~ Aa~ Aa~ Aa~ Aa~ Pa! Aa!");
dotest(7, "Aa~ Aa~ Aa~ Aa~ Aa~ Aa~ Pa!");
dotest(10, "Aa~ Aa~ Aa~ Aa~ Aa~ Aa~ Aa~ Aa~ Aa~ Pa!");
dotest(1, "");
dotest(-1, "");
}