내 프로그램에 약간의 문제가 있습니다. 그것이 작동하는 방식은 하나의 함수가 두 개의 char 사이에 char의 문자열을 반환한다고 가정합니다. 예를 들어 "a1234a"와 "a"사이의 모든 문자를 반환하려면 1234를 얻습니다. 문제는 내 출력도 첫 번째 'a'를 인쇄하므로 대신 "a1234"를 얻습니다. 코드는 다음과 같습니다 :프로그램 오류 사이의 문자열
char* string_between(char *s, char c){
int length = strlen(s);
int counter = 0;
char* strBetween = malloc(strlen(s));
for(int i = 0; i<length; i++){
if(s[i] == c){
counter++;
}
if(counter == 1){
strBetween[i] = s[i];
}
}
if(counter<2){
free(strBetween);
return NULL;
}
return strBetween;
}
은 내가 if(counter == 1)
성명에서 s[i] != c
을 추가하는 시도했지만, 그것은 악화 전혀 아무것도 인쇄되지 않습니다. 나는 아직도 C에서 매우 익숙해 져 있으므로 가능한 한 간단하게 설명 해주십시오 :) 읽어 주셔서 감사합니다!
디버거 사용 방법을 배우십시오. 디버거를 사용하면 코드별로 한 줄씩 단계별로 실행하여 변수 및 값을 모니터링하면서 코드가 무엇을하는지 확인할 수 있습니다. 모든 프로그래머가 필요로하는 필수 기술입니다. –
하나의 기본적인 실수 : 반환 된 문자열을 종료하지 못했습니다. 또한 이름이'str'으로 시작하는 함수를 정의 할 수 없습니다. 이것은 예약 된 네임 스페이스입니다. – unwind
'strBetween [i] = s [i];'줄에'i' 값이 무엇인지 생각해보십시오. 또한 'c'가 입력 문자열의 첫 번째 문자가 아닌 경우 어떻게 될까요? –