util.c (939B)
1#include "util.h" 2 3int 4is_numstr(const char *str) 5{ 6 int i; 7 8 if (!*str) return 0; 9 10 for (i = 0; str[i]; i++) { 11 if (str[i] < '0' || str[i] > '9') 12 return 0; 13 } 14 15 return 1; 16} 17 18char* 19randstr(int n) 20{ 21 const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 22 "abcdefghijklmnopqrstuvwxyz0123456789"; 23 char *msg; 24 int i; 25 26 srand(time(NULL)); 27 28 msg = malloc(n + 1); 29 ASSERT(msg != NULL); 30 31 for (i = 0; i < n; i++) 32 msg[i] = alphabet[rand() % (ARRSIZE(alphabet)-1)]; 33 msg[n] = '\0'; 34 35 return msg; 36} 37 38void 39assert(int res, const char *fmtstr, ...) 40{ 41 va_list ap; 42 43 if (!res) { 44 va_start(ap, fmtstr); 45 vfprintf(stderr, fmtstr, ap); 46 va_end(ap); 47 exit(1); 48 } 49} 50 51char* 52ask(const char *fmtstr, ...) 53{ 54 static char buf[2048]; 55 va_list ap; 56 char *tok; 57 58 va_start(ap, fmtstr); 59 vprintf(fmtstr, ap); 60 va_end(ap); 61 62 if (fgets(buf, ARRSIZE(buf), stdin)) { 63 tok = strchr(buf, '\n'); 64 if (tok) *tok = '\0'; 65 } else { 66 *buf = '\0'; 67 } 68 69 return buf; 70}