字符串数组
#include <stdio.h>
int test()
{
// 1、char类型的二维数组
char map[3][3] = {
"oo",
"xx"
};
// 2、char类型的指针数组
char *name = "zbz";
char * m[3] = {
"oo",
"xx"
};
printf("%c\n",*m[1]);
// *m[1] = 'O';
return 0;
}
//写个函数计算字符串长度
//第一种方式
int myStrlen(const char *str)
{
int len = 0;
for (int i = 0; str[i] != '\0'; i++) {
len++;
}
return len;
}
//第二种方式
int myStrlen2(const char *str)
{
int len = 0;
for (;str[len] != '\0'; len++);
return len;
}
//第三种方式
int myStrlen3(const char *str)
{
int len = 0;
for (; str[len++] != '\0';);
return len - 1;
}
//第四种方式
int myStrlen4(const char *str)
{
int len = -1;
for (; str[++len];) ;
return len;
}
//第五种方式
int myStrlen5(const char *str)
{
int len = -1;
while (str[++len]);
return len;
}
//第六种方式
int myStrlen6(const char *str)
{
const char *start = str;
while (*(str++) != '\0');
return (int)(str - start - 1);
}
int test2()
{
char *name = "";
int len = myStrlen6(name);
printf("%d\n",len);
return 0;
}
#include <string.h>
//写一个函数,把字符串反转
void reverseString(char *str)
{
// 获取字符串长度
size_t len = strlen(str);
// 定义指针指向字符串末尾(\0前面的那个字符)
char *end = str + len - 1;
while (str < end) {
char temp = *str;
*str = *end;
*end = temp;
str++;
end--;
}
}
int main()
{
char name[] = "abcd";
reverseString(name);
printf("%s\n",name);
return 0;
}
int test3( )
{
printf("%s\n","abc");
char *name = "zbz";
// puts输出一个字符串,自动换行
puts(name);
char names[10];
// 1、不能读取空格
// scanf("%9s",names);
// printf("%s\n",names);
// 最危险
// 可以读取空格,但是它很容造成数组越界
// gets(names);
// 1、可以读取空格
// 2、根据数组长度来动态的处理
fgets(names, sizeof(names), stdin);
puts(names);
// 不会换行
fputs(names, stdout);