写?个代码,将字符串中的?写字?转?写,其他字符不变。
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i = 0;
char str[] = "Test String.\n";
char c;
while (str[i])
{
c = str[i];
if (islower(c))
c -= 32;
putchar(c);
i++;
}
return 0;
}
int
tolower
(
int
c );
//
将参数传进去的?写字?转?写
int
toupper
(
int
c );
//
将参数传进去的?写字?转?写
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i = 0;
char str[] = "Test String.\n";
char c;
while (str[i])
{
c = str[i];
if (islower(c))
c = toupper(c);
putchar(c);
i++;
}
return 0;
}
size_t
strlen
(
const char
* str );
?
字符串以
'\0'
作为结束标志
,strlen函数返回的是在字符串中
'\0'
前?出现的字符个数(不包
含
'\0'
)。
?
参数指向的字符串必须要以
'\0'
结束。
?
注意函数的返回值为size_t,是?符号的( 易错 )
?
strlen的使?需要包含头?件
#include <stdio.h>
#include <string.h>
int main()
{
const char* str1 = "abcdef";
const char* str2 = "bbb";
if(strlen(str2)-strlen(str1)>0)
{
printf("str2>str1\n");
}
else
{
printf("srt1>str2\n");
}
return 0;
}
//计数器?式
int my_strlen(const char * str)
{
int count = 0;
assert(str);
while(*str)
{
count++;
str++;
}
return count;
}
//不能创建临时变量计数器
int my_strlen(const char * str)
{
assert(str);
if(*str == '\0')
return 0;
else
return 1+my_strlen(str+1);
}
//指针-指针的?式
int my_strlen(char *s)
{
assert(str);
char *p = s;
while(*p != ‘\0’ )
p++;
return p-s;
}
strcpy的模拟实现:
char *my_strcpy(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while((*dest++ = *src++))
{
;
}
return ret;
}
模拟实现strcat函数:
char *my_strcat(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
{
dest++;
}
while((*dest++ = *src++))
{
;
}
return ret;
}
strcmp函数的模拟实现:
?
标准规定:
?
第?个字符串?于第?个字符串,则返回?于0的数字
?
第?个字符串等于第?个字符串,则返回0
?
第?个字符串?于第?个字符串,则返回?于0的数字
?
那么如何判断两个字符串? ?较两个字符串中对应位置上字符ASCII码值的??。