Я пытаюсь написать функцию в C, которая берет строку, например: "abc123def"
и возвращает число в строковой форме: "123"
.Извлечение числа из строки
У меня мало опыта работы с C, поэтому мне было интересно, правильно ли я использую функцию isDigit()
. Мой код ниже, если есть лучший способ решить проблему, я был бы признателен за помощь. Благодаря!
char findNumber(char *str1)
{
char num1[] = "";
int i = 0;
int j = 0;
while(str1[i] != '\0') {
if(isDigit(str1[i])) {
num1[j] = str1[i];
j++;
}
i++;
}
num1[j] = '\0';
return num1;
}
int main(int argc, const char* argv[])
{
char str2[] = "!3254";
printf(findNumber(str2));
return 0;
}
Я получаю ошибки, такие как:
undefined reference to `isDigit'
и
return makes integer from pointer without a cast
Что может быть причиной этого?
Это плохо сформулированный вопрос. Что, если строка - это что-то вроде «abc123def456ghi»? –
Кажется, мне хорошо, но вы не выделили место для 'num1' в своем методе. Возможно, вам захочется прочитать информацию о распределении памяти C (попробуйте найти разницу между распределением статической и динамической памяти). * edit * Также похоже, что Kerrek SB прав ... требования немного не определены. Если мы можем предположить, что входная строка будет содержать только один номер, тогда вы должны быть в порядке – rliu
Да, извините, в исходной строке есть только один номер. Я получаю такие ошибки, как «неопределенная ссылка на« isDigit »и« return делает целое число из указателя без литья ». –