第一题:
void fun41()
{
//定义一个长度为20的字符数组name,初始化为“tom”。
char name[20] = "tom";
int i = 0, len = strlen(name);
//显示name中字符串内容。
for (i = 0; i < len; i++)
{
printf("%c", name[i]);
}
//显示name中字符串长度。
printf("\n字符串长度为:%d", len);
//显示name字符数组的大小。
printf("\n字符数组大小为:%d", sizeof(name) / sizeof(char));
//为name重新赋值字符串“Liming”。
strcpy(name, "Liming");
//编写一个函数show,参数为一个字符串指针,函数的功能是将输入的字符串输出。
show(name);
//定义一个字符指针address,初始化为NULL。
//为address赋值“Beijing”。
char* address = NULL;
address = "Beijing";
//显示address所指向字符串的值。
show(address);
//显示address所指向字符串的长度。
printf("\naddress所指字符串长度为:%d", i);
//address求sizeof(),查看并理解结果。
printf("\nsizeof(address)=%d", sizeof(address));
//为address重新赋值“New York”。
address = "New York";
//显示address所指向字符串的值。
show(address);
//使用strcpy为address赋值“Shanghai”,查看并理解结果。
address = NULL;
char* str = "Shanghai";
strcpy(address, str);
//使用memset为address清零,查看并理解结果。
memset(address, '\0', sizeof(address));
//使用strcat为address追加字符串“street”,查看并理解结果。
strcat(*str,"street");
}
第二题:
接收一个字符串,并将其中小写字母改为大写字母,大写字母改为小写字母,其他字符不变,然
后逆序输出。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *s, *p = s;
printf("请输入一个字符串:\n");
fflush(stdout);
scanf("%s", s);
while (*s != '\0') {
if (*s >= 'a' && *s <= 'z')
*s = *s - 32;
else if (*s >= 'A' && *s <= 'Z')
*s = *s + 32;
s++;
}
printf("转换并逆序输出:\n%s", strrev(p));
return EXIT_SUCCESS;
}
第三题:
编写一个名叫my_strcpy的函数,它类似于strcpy函数,但它不会溢出目标数组。复制
的结果必须是一个真正的字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *my_strcpy(char *dest, int dest_len,