예를 들어 "abc123def"
과 같이 문자열을 사용하는 함수를 C에 작성하려고 시도하고 문자열 형식의 숫자 인 "123"
을 반환합니다.문자열에서 숫자 추출
저는 C 언어에 대한 경험이 거의 없으므로 isDigit()
기능을 제대로 사용하고 있는지 궁금합니다. 내 코드가 아래 있습니다. 문제를 해결할 수있는 더 좋은 방법이 있다면 도움을 주시면 감사하겠습니다. 감사! 이러한 원인이 될 수 무엇
undefined reference to `isDigit'
및
return makes integer from pointer without a cast
:
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;
}
나는 다음과 같은 오류를 받고 있어요?
. 만약 문자열이''abc123def456ghi ''와 같은 것이라면? –
나에게 잘 들리지만, 메소드에'num1'을위한 공간을 할당하지 않았습니다. C 메모리 할당 (정적 메모리 할당과 동적 메모리 할당의 차이점을 찾아보십시오)을 읽어 볼 수 있습니다. * 편집 * 또한 Kerrek SB가 맞는 것처럼 보입니다. 요구 사항은 제대로 정의되지 않았습니다. 입력 문자열에 하나의 숫자 만 포함된다고 가정하면 괜찮을 것입니다. – rliu
죄송합니다. 원래 문자열에는 하나의 숫자 만 있습니다. "isDigit '에 대한 정의되지 않은 참조"와 "캐스트없이 포인터에서 정수로 돌아 가기"와 같은 오류가 발생합니다. –