static int process_mdb(SCLPEvent *event, MDBO *mdbo) { int rc; int len; uint8_t buffer[SIZE_BUFFER]; len = be16_to_cpu(mdbo->length); len -= sizeof(mdbo->length) + sizeof(mdbo->type) + sizeof(mdbo->mto.line_type_flags) + sizeof(mdbo->mto.alarm_control) + sizeof(mdbo->mto._reserved); assert(len <= SIZE_BUFFER); /* convert EBCDIC SCLP contents to ASCII console message */ ascii_put(buffer, mdbo->mto.message, len); rc = write_console_data(event, (uint8_t *)NEWLINE, 1); if (rc < 0) { return rc; } return write_console_data(event, buffer, len); }
int main(void) { char input[LIM][SIZE]; char *ptstr[LIM]; char select; int ct = 0; printf("Input up to %d lines finished by EOF(^Z).\n",LIM); puts("To stop, press the Enter key at a line's start."); while(ct < LIM && gets(input[ct]) && input[ct][0] != '\0') { ptstr[ct] = input[ct]; //注意,不要把二维数组传到接受指针数组的函数,一个元素是指针,一个是字符,二维数组定义为char (str *)[SIZE] ct ++; } while((select = get_choice())!= 'q') { switch(select) { case 'a': origin_put(ptstr,ct); break; case 'b': ascii_put(ptstr,ct); break; case 'c': length_put(ptstr,ct); break; case 'd': first_word_length_put(ptstr,ct); break; default: puts("Program error!"); break; } } printf("Bye!\n"); return 0; }