int main(void) { Book array1[MAX]; int *array2[MAX]; int i; int id; int val; char name[10]; Book res1; int *res2; for(i = 0; i < MAX; i++){ printf("input info of book\n"); scanf("%d", &id); scanf("%s", name); if(insert_struct(&(array1[i]), id, name) == -1) exit(1); printf("input int\n"); scanf("%d", &val); if(insert_int(&(array2[i]), val) == -1) exit(1); } res1 = (Book)max((void **)array1, MAX, cmp_struct); res2 = (int *)max((void **)array2, MAX, cmp_int); printf("the max of books : %d, %s\n", res1->id, res1->name); printf("the max of int : %d\n", *res2); return 0; }
static void register_shifters(void) { char filename[256]; struct token *token; char *name; int *val; snprintf(filename, sizeof(filename), "%s.bit_shifters", option_project_str); token = get_tokens_file(filename); if (!token) return; if (token_type(token) != TOKEN_STREAMBEGIN) return; token = token->next; while (token_type(token) != TOKEN_STREAMEND) { if (token_type(token) != TOKEN_IDENT) return; name = alloc_string(show_ident(token->ident)); token = token->next; if (token_type(token) != TOKEN_NUMBER) return; val = malloc(sizeof(int)); *val = atoi(token->number); insert_struct(shifters, name, val); token = token->next; } clear_token_alloc(); }
QStringList tabtoh::parse_and_convert_instr(QStringList &instr_desc){ QString instr_name; QString instr_name_stripped; QString instr_name_quoted; QString mem_type_str; QString tempr_domain_str; QString volt_domain_str; QString freq_domain_str; QString num_of_operands; QStringList converted_instr; QStringList init_names; QStringList init_values; QString mem_sz_str; QString tempr_sz_str; QString volt_sz_str; QString freq_sz_str; QString num_of_ops_sz; instr_name = instr_desc.at(0).section("\t", 1, 1); instr_name_quoted = instr_name; instr_name_quoted.prepend("\""); instr_name_quoted.append("\""); instr_name_stripped = convert_dot_to_slash(instr_name); detect_domain_sizes(instr_desc, mem_sz_str, tempr_sz_str, volt_sz_str, freq_sz_str, num_of_ops_sz); insert_struct("const instruction_t", instr_name_stripped.toLatin1().data(), 0, converted_instr); insert_struct_field("instr_mnemonic", instr_name_quoted.toLatin1().data(), 1, converted_instr); insert_struct_field("num_of_mem_domains", mem_sz_str.toLatin1().data(), 1, converted_instr); insert_struct_field("num_of_tempr_domains", tempr_sz_str.toLatin1().data(), 1, converted_instr); insert_struct_field("num_of_volt_domains", volt_sz_str.toLatin1().data(), 1, converted_instr); insert_struct_field("num_of_freq_domains", freq_sz_str.toLatin1().data(), 1, converted_instr); insert_struct_field("num_of_operand_domains", num_of_ops_sz.toLatin1().data(), 1, converted_instr); insert_struct_struct_field("domains", 1, converted_instr); for(int i = 2; i < instr_desc.size(); i++){ if(is_empty_line(instr_desc.at(i))){ break; } mem_type_str = instr_desc.at(i).section('\t', 0, 0); tempr_domain_str = instr_desc.at(i).section('\t', 1, 1); volt_domain_str = instr_desc.at(i).section('\t', 2, 2); freq_domain_str = instr_desc.at(i).section('\t', 3, 3); num_of_operands = instr_desc.at(i).section('\t', 4, 4); init_names << "mem_addr"; init_values << "0"; init_names << "mem_type"; init_values << mem_type_str; init_names << "tempr_domain"; init_values << tempr_domain_str; init_names << "volt_domain"; init_values << volt_domain_str; init_names << "freq_domain"; init_values << freq_domain_str; init_names << "num_of_operands"; init_values << num_of_operands; { QString energy_time, energy_current; energy_time = instr_desc.at(i).section('\t', 5, 5); init_names << "consumed_time"; init_values << energy_time.section(',', 0, 0); init_names << "consumed_current"; init_values << energy_time.section(',', 1, 1); } insert_struct_initializers(init_names, init_values, 2, converted_instr); init_names.clear(); init_values.clear(); } converted_instr << "\t}\r\n"; converted_instr << "};\r\n\r\n"; return converted_instr; }