c primer plus 11 复习题
9、
#include <stdio.h> char *s_gets(char *st, int n); int main(void) { char st1[100]; s_gets(st1, 100); puts(st1); return 0; } char *s_gets(char *st, int n) { char *ret_val; ret_val = fgets(st, n, stdin); if(ret_val) { while(*st != '\n' && *st != '\0') st++; if(*st == '\n') *st = '\0'; else while(getchar() != '\n') continue; } return ret_val; }
10、
#include <stdio.h> int strlen2(char *ar); int main(void) { char st1[100] = "3sdfad"; int n; n = strlen2(st1); printf("n: %d.\n", n); return 0; } int strlen2(char * ar) { int count = 0; while(*ar) { count++; ar++; } return count; }
11、
#include <stdio.h> #include <string.h> #define SIZE 100 char *s_gets(char *st, int n); int main(void) { char st1[SIZE]; puts("input the strings."); s_gets(st1, SIZE); puts(st1); return 0; } char *s_gets(char *st, int n) { char *ret_val; int i = 0; char * find; ret_val = fgets(st, n, stdin); if(ret_val) { find = strchr(st, '\n'); if(find) *find = '\0'; else while(getchar() != '\n') continue; } return ret_val; }
12、
#include <stdio.h> char * null(char * ar); int main(void) { char st1[100] = "a f ds"; char st2[100] = "af ds"; char * temp1, * temp2; temp1 = null(st1); puts(temp1); temp2 = null(st2); puts(temp2); return 0; } char * null(char * ar) { while(*ar != ' ') ar++; if(*ar == ' ') return ar; else return NULL; }
13、
#include <stdio.h> #include <string.h> #include <ctype.h> #define ANSWER "GRANT" #define SIZE 90 char *s_gets(char *st, int n); void ToUpper(char *ar); int main(void) { char try[SIZE]; puts("input try:"); s_gets(try, SIZE); ToUpper(try); while(strcmp(try, ANSWER)) { puts("wrong, try again."); s_gets(try, SIZE); ToUpper(try); } puts("right!"); return 0; } char *s_gets(char *st, int n) { char *ret_val; int i = 0; ret_val = fgets(st, n, stdin); if(ret_val) { while(st[i] != '\n' && st[i] != '\0') i++; if(st[i] == '\n') st[i] = '\0'; else while(getchar() != '\n') continue; } return ret_val; } void ToUpper(char * ar) { while(*ar != '\0') { *ar = toupper(*ar); ar++; } }