1.
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int n_cntrl;
int n_space;
int n_digit;
int n_lower;
int n_upper;
int n_punct;
int n_nprint;
int total;
int
main()
{
int ch;
int category;
while ((ch = getchar()) != EOF) {
total += 1;
if (iscntrl(ch))
n_cntrl += 1;
if (isspace(ch))
n_space += 1;
if (isdigit(ch))
n_digit += 1;
if (islower(ch))
n_lower += 1;
if (isupper(ch))
n_upper += 1;
if (ispunct(ch))
n_punct += 1;
if (!isprint(ch))
n_nprint += 1;
}
if (total == 0)
printf("No characters in the input!\n");
else {
printf("%3.0f%% %s control characters\n",
n_cntrl * 100.0 / total);
printf("%3.0f%% %s whitespace characters\n",
n_space * 100.0 / total);
printf("%3.0f%% %s digit characters\n",
n_digit * 100.0 / total);
printf("%3.0f%% %s lower case characters\n",
n_lower * 100.0 / total);
printf("%3.0f%% %s upper case characters\n",
n_upper * 100.0 / total);
printf("%3.0f%% %s punctuation characters\n",
n_punct * 100.0 / total);
printf("%3.0f%% %s non–printable characters\n",
n_nprint * 100.0 / total);
}
return 0;
}
2.
size_t my_strlen(char const *string, int size) {
register size_t length;
for (length = 0; length < size; length += 1) {
if (*string++ == '\0') {
break;
}
}
return length;
}
3.
#include <string.h>
char * my_strcpy(char *dst, char const *src, int size)
{
strncpy(dst, src, size);
dst[size -1] = '\0';
return dst;
}
4。
size_t my_strlen(char const *string, int size) {
register size_t length;
for (length = 0; length < size; length += 1) {
if (*string++ == '\0') {
break;
}
}
return length;
}
#include <string.h>
char * my_strcat(char *dst, char const *src, int size)
{
int length;
size-= 1;
length = size-(int)my_strlen(dst, size);
if (length > 0) {
strncat(dst, src, length);
dst[size] = '\0';
}
return dst;
}
5.
void my_strncat(char *dest, char *src, int dest_len)
{
register int len;
len = strlen(dest);
dest_len -= len + 1;
if( dest_len > 0 )
strncat( dest + len, src, dest_len );
}
6.
char *my_strcpy_end(register char *dst, register char const *src) {
while ((*dst++==*src++)!='\0')
{
;
}
return dst - 1;
}