0
문자열을 파싱해야하므로 숫자와 연산자 (예 : [12, '+', 45])가있는 배열이 필요합니다.숫자와 연산자에 대한 C 문자열을 구문 분석하십시오.
다음char str[100];
fgets(str, 100, stdin);
구문 분석하는 기능이다 : 그것은 작동하지 않습니다
char* parse_string(char *string)
{
char result_digits[50][50];
char result_operators[50];
static char result_string[100];
int i = 0;
int digits_cnt = 0;
int digit_string = 0;
int operators_cnt = 0;
while (string[i] != '\n') {
if (detect_symbol_type(string[i]) == sym_digit) {
result_digits[digit_string][digits_cnt] = string[i];
digits_cnt++;
} else {
if (detect_symbol_type(string[i]) == sym_operator) {
result_operators[operators_cnt] = string[i];
operators_cnt++;
digit_string++;
digits_cnt = 0;
}
}
i++;
}
result_operators[operators_cnt] = '\n';
double result_numbers[100];
for (int i = 0; i <= digit_string; i++) {
double result = 0;
sscanf(result_digits[digit_string], "%lf", &result);
result_numbers[i] = result;
printf("Result: %lf\n", result);
}
int k = 0;
for (int i = 0; i <= (digit_string + operators_cnt); i++) {
result_string[i] = result_numbers[k];
i++;
result_string[i] = result_operators[k];
k++;
}
return result_string;
}
그건 내가 문자열을 얻을 방법입니다. sscanf (문자열의 배열 (restul_digits))에서 문자열을 변환 할 수 없습니다 뭔가 잘못된 것 같습니다. 작동하게하려면 어떻게해야합니까?
는 정말 고마워요! 그건 실수 였어 :) – Maria