2014-02-10 4 views
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))에서 문자열을 변환 할 수 없습니다 뭔가 잘못된 것 같습니다. 작동하게하려면 어떻게해야합니까?

답변

2

당신은 아마 원 :

sscanf(result_digits[i], "%lf", &result); 
+0

는 정말 고마워요! 그건 실수 였어 :) – Maria

관련 문제