---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
今天学习了复杂数据类型中的字符串
一、字符串
1.基本使用
#include <stdio.h>
int main(int argc, const char * argv[])
{
//字符串常量后面都有一个\0
//"jack" == 'j' + 'a' + 'c' + 'k' + '\0'
//用数组来存储字符串常量
char name[10] = "jack\n";
//这里将数组传入,仅仅是个警告
printf(name);
printf(name);
printf(name);
return 0;
}
2.内存中存储细节
#include <stdio.h>
int main(int argc, const char * argv[])
{
//char name[] = {'i','t','c','a','s','e','\0'};
char name[] = "itcase";
//修改字符串中得字符
name[3] = 'H';
printf("%s\n",name);
return 0;
}
void test()
{
// \0 的ASCII码值是0
// 都是字符串
char name[8] = "it";
char name2[8] = {'i','t','\0'};
char name3[8] = {'i','i',0};
char name4[8] = {'i','t'};//建议不怎么写,尽量在后面加上尾标'\0'
// 不是一个字符串,(只能说是一个字符数组)
char name5[] = {'i','t '};
}
3.\0的作用
#include <stdio.h>
int main(int argc, const char * argv[])
{
char name[] = "it";
char name2[] = {'o','k'};
//输出结果是okit,具体原因看“\o在字符串储存中得作用图”
printf("%s\n",name2);
return 0;
}
4.strlen
#include <stdio.h>
#include <string.h>//strlen函数声明在string.h文件中
/*strlen函数:计算字符串长度
1.计算的是字符数,并不是字数
2.计算的字符不包括\0
3.从某个地址开始数字字符的个数,直到遇到\0为止
*/
int main(int argc, const char * argv[])
{
// int size = strlen(哈haha);
//printf("%d\n",size);
char name[] = "itcase";
char name2[] = {'0','6'};
int size = strlen(name2);
printf("%d\n",size);
//输出字符串中的某个字符
printf("%c\n",name[3]);
return 0;
}
5.练习:编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回值1,否则返回数值0
//编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回值1,否则返回数值0
#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c);
int main(int argc, const char * argv[])
{
char name[] = "itcase";
int result = char_contains( name , 'c');
printf("%d\n",result);
return 0;
}
/*方法一:
int char_contains(char str[],char c)
{
// int size = strlen(str);
//1.遍历整个字符串
for (int i = 0; i < strlen(str); i++)
{
//如果发现某个字符等于参数c,直接返回1,退出函数
if (str[i] == c ) {
return 1;
}
}
//2.说明str里面不包含字符c
return 0;
}*/
/*
//方法二:
int char_contains(char str[],char c)
{
int i = 0;
//1.遍历整个字符串
while (strlen(str))
{
//如果发现某个字符等于参数c,直接返回1,退出函数
if (str[i] == c)
{
return 1;
}
i++;
}
//2.说明str里面不包含字符c
return 0;
}*/
/*
//方法三:
int char_contains(char str[],char c)
{
int i = -1;
//1.遍历整个字符串
while (str[++i])
{
//如果发现某个字符等于参数c,直接返回1,退出函数
if (str[i] == c)
{
return 1;
}
}
//2.说明str里面不包含字符c
return 0;
}*/
//方法四
int char_contains(char str[],char c)
{
int i = -1;
while (str[++i] != c && str[i] != '\0');
return str[i] != '\0';
// return 0;
}
6.二维字符串数组
#include <stdio.h>
int main(int argc, const char * argv[])
{
char name[] = "jack";
char name1[] = "rose";
char name2[] = "jim";
char name3[] = "jake";
char names[2][10] = {"jack","rose"};
char names2[2][10] =
{
{'j','a','c','k','\0'},
{'r','o','s','e','\0'}
};
// printf("%c\n",names[0]);
printf("%c\n",names[0][3]);
return 0;
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------