【C语⾔】字符串(main函数参数)⽂章⽬录
字符串
字符数组
#include <stdio.h>
int main(void)
{
char word[]={'H','e','l','l','o',' ','w','o','r','l','d',};
int i=0;
int n=sizeof(word)/sizeof(word[0]);
for (i=0;i<n;i++){
printf("%c",word[i]);
}
printf("\n");
return 0;
}
输出
字符串定义
1、以’\0’结束的⼀串字符;
2、 0标准字符串的结束,但他不是字符串的⼀部分;
3、字符串以数组的形式存在,以数组或指针(更多)的形式访问;
4、string.h头⽂件有很多处理字符串的函数。
字符串变量
char* str = “Hello”;
char word[] =“Hello”;
char word[10] = “Hello”; //加上结尾的’\0’,字符数组的长度是6
字符串常量
“Hello”
两个相邻的字符串常量会被⾃动连接起来
"hello "“world” =“hello world”
不同的定义⽅法⽤的地址不⼀样:
char* str = “Hello”;相当是const char* str = “Hello”;
str是⼀个指向字符串常量的指针(这段地址⽐较特殊,⽽且相同字符串的地址相同)
试图对str所指的字符串做写⼊会导致严重后果
如果需要修改字符串,应该⽤字符数组进⾏定义
char str2[] = “Hello”;
#include <stdio.h>
int main(void)
c语言如何创建字符串数组{
int i=0;
char* str = "Hello";
char* str1 = "Hello";
char str2[] = "Hello";
printf("&i  =%p\n",&i);
printf("str =%p\n",str);
printf("str1=%p\n",str1);
printf("str2=%p\n",str2);
return 0;
}
运⾏结果
字符串特点
以字符数组的形式存在
不能⽤±*/运算符进⾏运算
通过数组的⽅式可以遍历字符串
使⽤指针还是数组定义字符串?
char* str = “Hello”
char word[] = “Hello”
指针:要处理⼀个字符串(对字符串只读)
1、处理参数
2、malloc动态分配空间
数组:要构造⼀个字符串(对字符串读写)1、作为本地变量空间,⾃动被回收
字符串输⼊输出scanf&printf
#include <stdio.h>
int main(void)
{
char* str = "Hello";
char str2[] = "Hello";
printf("str =%s\n",str);
printf("str2=%s\n",str2);
char str3[3];
char str4[3];
scanf("%s%s",str3,str4);
printf("%s##%s\n",str3,str4);
return 0;
}
1、scanf输⼊⼀个单词(空格、tab或回车为⽌)
2、scanf不知道字符⼤⼩,上述截图字符超过定义的长度依然正常输⼊。
字符串输⼊应该单独使⽤⼀个scanf函数,⽽且能够设置输⼊的⼤⼩
#include <stdio.h>
int main(void)
{
char str3[3];
char str4[3];
scanf("%2s",str3);
scanf("%s",str4);
printf("%s##%s\n",str3,str4);
return 0;
}
常见错误
1、定义了指针变量误以为定义了字符串变量直接使⽤(运⾏的时候不⼀定出错) char* str;
scanf("%s",str);
2、空字符串
char str[] = “”; //空字符串,⽆法存放字符
char str[10] = “”; //长度是10,str[0] = ‘\0’
字符串数组
char **a;
char a[][];
⼆位字符串数组第⼆维要有固定的⼤⼩
#include <stdio.h>
int main(void)
{
char a[][10] = {
"hello",
"1234567890",
};
printf("%s##\n",a);
printf("%s##\n",a[1]);
return 0;
}
上⾯的char a[][10]可以替换为char* a[]输出结果不同,以下是改成char* a输出结果的
main函数参数
int main(int argc,char const *argv[])
argc是参数个数,argv是参数组成的字符串数组
参考代码
#include <stdio.h>
int main(int argc,char const *argv[])
{
int i;
for (i=0;i<argc;i++){
printf("main参数%d:%s\n",i,argv[i]);
}
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。