nullLesson 11
字符串与字符指针Lesson 11
字符串与字符指针mtysoft@163.comASCII码ASCII码'A' = 65'a' = 97' ' = 32'0' = 48常见字符
的ASCII码整型与字符型整型与字符型黄建语录四:整型和字符型通用。[2007.4]已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是
A)c = (c - 'A') % 26 + 'a'
B)c = c + 32
C)c = c - 'A' + 'a'
D)c = ('A' + c) % 26 - 'a'转义字符转义字符字符数组与串2-1字符数组与串2-1char sa[ ] = {'N','B','A'};'N''B''A'sa201char sb[ ] = "NBA";'N''B''A''\0'sb201334字符数组与串2-2字符数组与串2-2'N''B''A'sa201'N''B''A''\0'sb2013char sa[ ] = {'N','B','A','\0'};char sb[ ] = "NBA";44'\0'3区分'0'与'\0'区分'0'与'\0'输出字符串输出字符串'N''B''A'sa201'\0'3char sa[4] = "NBA";
for (i = 0; i < 3; i++)
printf("%c", sa[i]); NBAprintf("%s", sa);NBA字符串长度字符串长度'N''B''A'sa201'\0'3char sa[4] = "NBA";int k = strlen(sa);k = 3printf("k = %d", k);strlen与sizeofstrlen与sizeof'N''B''A'sa201'\0'3char sa[4] = "NBA";int k = strlen(sa), v = sizeof(sa);k = 3, v = 4printf("k = %d, v = %d", k, v);字符串拷贝3-1字符串拷贝3-1'N''B''A'sa201'\0'3char sa[4] = "NBA", sb[4];strcpy(sb, sa);printf("sa = %s, sb = %s", sa, sb);'N''B''A'sb'\0'字符串拷贝3-2字符串拷贝3-2'N''B''A'sa201'\0'3char sa[4] = "NBA", sb[4];strcpy(sb, "YOU");printf("sa = %s, sb = %s", sa, sb);'Y''O''U'sb'\0'字符串拷贝3-3字符串拷贝3-3'm''e''\0'sachar sa[3]="me", sb[5]="LOVE";strcpy(sb, sa);'L''O''V'sb'E''\0'201'm''e''\0'sa = me, sb = me字符串连接 字符串连接 'm''e''\0'sa'L''O''V'sb'E''\0'201'm''e''\0'sa = me, sb = LOVEmechar sa[3]="me", sb[7]="LOVE";strcat(sb, sa);大小写转换 大小写转换 char sa[20] = "I Love You!";
char sb[20] = "I Love You!";
strupr(sa);
strlwr(sb);
printf("sa = %s\n", sa);
printf("sb = %s\n", sb);sa = I LOVE YOU!
sb = i love you!字符串比较 字符串比较 int a, b, c, d, e, f;
char sa[4]="ATM", sb[8]="ATM";b = strcmp("ATM", "ABCD");c = strcmp("ATM", "ATM");d = strcmp("ATM ", "ATM");e = strcmp("ABCD", "abcd");f = strcmp(sa, sb);a = strcmp("ABCD", "ATM");a=-1b=1c=0d=1e=-1f=0字符串函数 字符串函数 习
演练4-1习题演练4-1char sa[7] = "ABC\0TV";ABCprintf("%s", sa+1);'A''B''C'sa'\0''T''V''\0'2013546printf("%s", sa+4);printf("%s", sa);BCTV习题演练4-2习题演练4-2char sa[7] = "ABC\0TV";3,printf("%d,", strlen(sa+1));'A''B''C'sa'\0''T''V''\0'2013546printf("%d,", strlen(sa+4));printf("%d,", strlen(sa));2,2,printf("%d,", sizeof(sa));7,习题演练4-3习题演练4-3char sa[7] = "ABC\0TV", sb[7];strcpy(sb+2, sa+4);'A''B''C'sa'\0''T''V''\0'2013546strcpy(sb, sa);'A''B''C'sb'\0''T''V''\0'strcpy(sb+strlen(sb), sa+1);'B''C''\0'习题演练4-4习题演练4-4'm''e''\0'sachar sa[3]="me", sb[7]="LOVE";strcpy(sb + strlen(sb), sa);'L''O''V'sb'E''\0'201'm''e''\0'sa = me, sb = LOVEme区分'A'与"A"区分'A'与"A"'A'"A"1.占1个字节;
2.是数值;
3.格式符"%c";
4.赋值方式:
char ch;
ch = 'A';
或
char ch = 'A';1.占2个字节;
2.是地址;
3.格式符"%s";
4.赋值方式:
char s[2];
strcpy(s,"A");
或
char s[2]="A";实现strlen函数2-1实现strlen函数2-1'N''B''A'sa201'\0'3char sa[4] = "NBA";
int k = 0;
while (sa[k] != '\0')
k++;
printf("k = %d", k);k = 3)实现strlen函数2-2实现strlen函数2-2'N''B''A'sa201'\0'3char sa[4] = "NBA", *p;
p = sa;
while (*p)
p++;
printf("%d", p-sa);3实现strcpy函数4-1实现strcpy函数4-1NBAsb201\03int i;
for (i = 0; i <= strlen(sb); i++)
sa[i] = sb[i];NBAsa\0实现strcpy函数4-2实现strcpy函数4-2NBAsb\0p = sa, w = sb;
while (*w)
{
*p = *w;
w++; p++;
}NBAsa\0*p = '\0';*p = 0;*p = *w;实现strcpy函数4-3实现strcpy函数4-3NBAsb\0p = sa, w = sb;
while (*p = *w)
{ p++, w++; }NBAsa\0实现strcpy函数4-4实现strcpy函数4-4NBAsb\0p = sa, w = sb;
while (*p++ = *w++);NBAsa\0实现strcat函数2-1实现strcat函数2-1me\0saint i, a = strlen(sa), b = strlen(sb);
for (i = 0; i <= a; i++)
sb[b+i] = sa[i];LOVsbE\0201me\0实现strcat函数2-2实现strcat函数2-2me\0sachar *p = sa, *w = sb + strlen(sb);LOVsbE\0me\0while (*w++ = *p++);实现strupr函数2-1实现strupr函数2-1char sa[ ] = "Love You!";
int i;
for (i = 0; i < strlen(sa); i++)
if (sa[i] >= 'a' && sa[i] <= 'z')
sa[i] -= 32; eYsa\0ou!LovEOUOV2013546879实现strupr函数2-2实现strupr函数2-2eYsa\0ou!LovEOUOVchar *p = sa;
while (*p)
{
if (*p >= 'a' && *p <= 'z')
*p -= 32;
p++;
} 实现strcmp函数4-1实现strcmp函数4-1ABCsaDint i = 0;
while (sa[i] == sb[i])
i++;ATMsb\0if (sa[i] < sb[i]) return -1;
else if (sa[i] > sb[i]) return 1;
else return 0;\0201340213实现strcmp函数4-2实现strcmp函数4-2AB\0sa?int i = 0;
while (sa[i] == sb[i])
i++;AB\0sb?20130213if (sa[i] < sb[i]) return -1;
else if (sa[i] > sb[i]) return 1;
else return 0;实现strcmp函数4-3实现strcmp函数4-3AB\0saint i = 0;
while(sa[i]==sb[i] && sa[i] && sb[i])
i++;AB\0sb20130213if (sa[i] < sb[i]) return -1;
else if (sa[i] > sb[i]) return 1;
else return 0;实现strcmp函数4-4实现strcmp函数4-4ABCsaDchar *p = sa, *w = sb;
while (*p == *w && *p && *w)
p++, w++;ATMsb\0if (*p < *w) return -1;
else if (*p > *w) return 1;
else return 0;\0本课小结本课小结字符串函数字符类型与 ASCII 码转义字符sizeof 运算符'0'与'\0','A'与"A"课后题:统计子串个数课后题:统计子串个数编写函数fun,统计长度为2的字符串a在另一个字符串b中出现的次数。例如:若
a[ ] = "he"
b[ ] = "There are spots in the sun."
则函数返回2。
int fun(char a[ ], char b[ ])
{
...
}