- 字符串逆转
- 接收一串字符
使用gets,scanf遇到空格会停 - 计算字符数组的长度:
// 初始化
char a[100] = {0};
char a[] = "aaaaa";
gets(a);// gets接收带空格的串
int sz = strlen(a); // sz会得a中输入的长,不是开辟的100
// 第二种""方式定义也能得到字符串长度
- 关于字符串初始化:
char a = {0} char c[1000] = {0}
都表示初始第一个字符为NULL
我int转a 得到数字0,而数字0在ascall意味着 NULL
gets()和strlen()都在<stdio.h>
字符串计算长度必须 用strlen,一定要初始化长度,因为数组是静态的
char a[100]; 一定要给大小
字符串逆转demo:
// 逆序字符串
void reverse(char* left, char* right)
{
// 传入均为地址
while (left < right)
{
char tmp = 0;
tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char c[10000] = {0};
//printf("%c", c[0]);
// scanf遇到空格会停
gets(c);
printf("%s\n", c);
int sz = strlen(c);
reverse(c, c+sz-1);
for (int i = 0; i < sz; i++)
{
printf("%c", c[i]);
}
return 0;
}
也可以在函数内部求strlen(),int型数组才需要传长度,string型不没事,它找\0
*读取一行不要用scanf(),遇到空格就停止,所以用gets()读一行,空格也会当做字符
输出一定要:用循环,带空格不能用%c