11.1
#include<stdio.h>
int main(void)
{
char *p = "123";
printf("p = \"%s\"\n", p);
p = "456" + 1;
printf("p = \"%s\"\n", p);
return 0;
}
11.2
#include<stdio.h>
int main(void)
{
int i, n1, n2;
char a[][5] = {"LISP", "C", "Ada"};
char *p[] = {"PAUL", "X", "MAC"};
n1 = sizeof(a) / sizeof(a[0]);
n2 = sizeof(p) / sizeof(p[0]);
for (i = 0; i < n1; i++)
printf("a[%d] = \"%s\"\n", i, a[i]);
for (i = 0; i < n2; i++)
printf("p[%d] = \"%s\"\n", i, p[i]);
return 0;
}
11.3
#include<stdio.h>
char* str_copy(char *d, const char *s)
{
char *t = d;
while (*d++ = *s++)
;
return t;
}
int main(void)
{
char str[128] = "ABC";
char tmp[128];
printf("str = \"%s\"\n", str);
printf("复制的是: ", tmp);
scanf("%s", tmp);
puts("复制了。");
printf("str = \"%s\"\n", str_copy(str, tmp));
return 0;
}
11.4
#include<stdio.h>
#include<string.h>
void put_string(const char *s)
{
while(*s)
printf("%c", *s++);
}
int main(void)
{
char *str = "ABC";
put_string(str);
return 0;
}
11.5
#include<stdio.h>
#include<string.h>
int str_chnum(const char *s, int c)
{
int cnt = 0;
while (*s)
{
if (*s == c)
cnt++;
*s++;
}
return cnt;
}
int main(void)
{
char str[128];
char ch = 'a';
printf("请输入字符串: ");
scanf("%s", str);
printf("字符串中字符%c的个数为%d。\n", ch, str_chnum(str, ch));
return 0;
}
11.6
#include<stdio.h>
#include<string.h>
char *str_chr(const char *s, int c)
{
char *p;
while (*s)
{
if (*s == c)
{
p = s;
break;
}
else
p = NULL;
*s++;
}
return p;
}
int main(void)
{
char a[128];
char ch = 'b';
printf("请输入字符串: ");
scanf("%s", a);
printf("返回的指针为%p\n", str_chr(a, ch));
return 0;
}
11.7
#include<stdio.h>
#include<ctype.h>
void str_toupper(char *s)
{
while (*s)
{
*s = toupper(*s);
*s++;
}
}
void str_tolower(char *s)
{
while (*s)
{
*s = tolower(*s);
*s++;
}
}
int main(void)
{
char str[128];
printf("请输入字符串: ");
scanf("%s", str);
str_toupper(str);
printf("大写字母: %s\n", str);
str_tolower(str);
printf("小写字母: %s\n", str);
return 0;
}
11.8
#include<stdio.h>
void del_digit(char *str)
{
char *tmp = str;
while (*tmp)
{
if (*tmp >= '0' && *tmp <= '9')
tmp++;
else
*str++ = *tmp++;
}
*str = '\0';
}
int main(void)
{
char s[128];
printf("请输入字符串: ");
scanf("%s", s);
del_digit(s);
printf("处理后的字符串为\"%s\"\n", s);
return 0;
}
11.9
#include<stdio.h>
#include<string.h>
int main(void)
{
char s1[] = {"HELLO"};
char s2[] = {"WORLD"};
char s3[] = {"PERSON"};
printf("%d\n", strlen(s3));
printf("\"%s\"\n", strcpy(s1, s2));
printf("\"%s\"\n", strncpy(s1, s2, 5));
printf("\"%s\"\n", strcat(s1, s3));
printf("\"%s\"\n", strncat(s1, s2, 5));
printf("%d\n", strcmp(s1, s2));
printf("%d\n", strncmp(s1, s2, 5));
return 0;
}
11.10
/* 实现与库函数atoi相同的功能 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int strtoi(const char *nptr)
{
int flag = 1;
int sum = 0;
while (*nptr)
{
if (*nptr == ' ')
nptr++;
else if (*nptr == '-') // 字符串里的数字为负数
{
flag = -1;
nptr++;
}
else if (*nptr == '+')
{
flag = 1;
nptr++;
}
else if (*nptr >= '0' && *nptr <= '9')
{
sum = sum * 10 + (*nptr - '0');
nptr++;
}
else
return 0;
}
sum *= flag;
return sum;
}
int main(void)
{
char s[128];
printf("请输入字符串: ");
scanf("%s", s);
printf("转换为整数后为%d。\n", atoi(s));
printf("%d\n", strtoi(s));
return 0;
}
版权声明:本文为weixin_42916038原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。