练习9-1
#include<stdio.h> int main(void) { char str[] = "ABC\0DEF"; printf("string str = %s\n",str); return 0; }
练习9-2
#include<stdio.h> int main(void) { char s[] = "ABC"; printf("string s = %s\n",s); s[0] = '\0'; printf("string s = %s\n",s); printf("string s become null!\n"); return 0; }
练习9-3
#include<stdio.h> #define NUM 3 int main(void) { int i; char s[NUM][128]; for (i = 0; i < NUM; i++) { printf("s[%d]:",i); scanf("%s",s[i]); if (strcmp(s[i], "$$$$$") == 0)//代码显示问题。。。 break; } for (i = 0; i < NUM; i++) { if (strcmp(s[i], "$$$$$") == 0)//代码显示问题。。。 break; else printf("s[%d] = \"%s\"\n",i,s[i]); } return 0; }
练习9-4
#include<stdio.h> void null_string(char s[]) { s[0] = '\0'; } int main(void) { char s[] = "test string"; printf("before null_string function\n"); printf("%s\n",s); printf("after null_string function\n"); null_string(s); printf("%s\n",s); printf("test end\n"); return 0; }
练习9-5
#include <stdio.h> int str_char(const char s[], int c) { int charflag = 0; while (s[charflag] != '\0') { if (s[charflag] == c) break; charflag++; } if (s[charflag] == '\0') charflag = -1; return charflag; } int main(void) { int r; char c;//int c; char s[128]; printf("input s = "); scanf("%s", s); getchar();//clear buffer. important printf("input c = "); scanf("%c", &c);//格式化输入char 用%c r = str_char(s, c); printf("下标为 %d", r); return 0; }
练习9-6
#include<stdio.h> int str_chnum(const char s[], int c) { int i=0; int num_c=0; while (s[i] != '\0') { if (s[i] == c) num_c++; i++; } return num_c; } int main(void) { char s[128]; char c; int num_c = 0; printf("input string s:"); scanf("%s",s); getchar();// clear input buffer. important printf("input character c:"); scanf("%c",&c); num_c = str_chnum(s,c); printf("string %s contains %d character %c",s,num_c,c); return 0; }
练习9-7
#include<stdio.h> void put_stringn(const char s[], int n) { int i; for (i = 0; i < n; i++) { int j = 0; while (s[j] != '\0') { putchar(s[j]); j++; } } return; } int main(void) { char s[128]; int n; printf("input string s:"); scanf("%s",s); getchar();// clear input buffer. important printf("input integer n:"); scanf("%d",&n); put_stringn(s,n); printf("\n"); return 0; }
练习9-8
#include<stdio.h> void put_stringr(const char s[]) { int str_len = 0; int i; while (s[str_len] != '\0') { str_len++; } while (str_len >= 0) { putchar(s[str_len]); str_len--; } return; } int main(void) { char s[128]; printf("input string s:"); scanf("%s",s);//note:scanf function cannot receive string with space printf("reverse string s:"); put_stringr(s); printf("\n"); return 0; }
练习9-9
#include<stdio.h> void rev_string(char s[]) { char tmp[128]; int ch_num=0; int i; while (s[ch_num] != '\0') { ch_num++; } for (i = 0; i < ch_num; i++) { tmp[i] = s[ch_num - 1 - i]; } for (i = 0; i < ch_num; i++) { s[i] = tmp[i]; } return; } int main(void) { char s[128]; printf("input string s:"); scanf("%s",s);//note:scanf function cannot receive string with space. rev_string(s); printf("reverse string s:%s",s); printf("\n"); return 0; }
练习9-10
#include<stdio.h> void del_digit(char s[]) { int i = 0; int j = 0; char tmp[128]; while (s[i] != '\0') { if (s[i] < '0'||s[i] > '9')//s[i] is not a number { tmp[j] = s[i]; j++; } i++; } for (i = 0; i < j; i++) { s[i] = tmp[i]; } s[j] = '\0'; return; } int main(void) { char s[128]; printf("input string s:"); scanf("%s",s);//note:scanf function cannot receive string with space. del_digit(s); printf("new string s:%s",s); printf("\n"); return 0; }
练习9-11
#include <stdio.h> #define STR_NUM 5 #define CHA_NUM 128 void put_strary(const char s[][CHA_NUM], int n) { int i; for (i = 0; i < n; i++) { if (strcmp(s[i], "$$$$$" )== 0) break; else printf("s[%d] = \"%s\"\n", i, s[i]); } } int main(void) { int i; char cs[STR_NUM][CHA_NUM]; for (i = 0; i < STR_NUM; i++) { printf("cs[%d] = ",i); scanf("%s",cs[i]); if (strcmp(cs[i], "$$$$$") == 0) break; } put_strary(cs, STR_NUM); return 0; }
练习9-12
#include<stdio.h> #define STR_NUM 2 void rev_string(char s[][128],int n) { char tmp[STR_NUM][128]; int ch_num = 0; int i; int j; for (i = 0; i < STR_NUM; i++) { while (s[i][ch_num] != '\0') { ch_num++; } for (j = 0; j < ch_num; j++) { tmp[i][j] = s[i][ch_num - 1 - j]; } for (j = 0; j < ch_num; j++) { s[i][j] = tmp[i][j]; } } return; } int main(void) { int i; char s[STR_NUM][128]; for (i = 0; i < STR_NUM; i++) { printf("s[%d] = ",i); scanf("%s",s[i]); } rev_string(s,STR_NUM); printf("after rev_string function:\n"); for (i = 0; i < STR_NUM; i++) { printf("s[%d] = %s\n", i,s[i]); } printf("\n"); return 0; }