【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) { 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; }
- C语言中main函数的参数
- 【C语言】【面试题】使用main函数的参数,实现一个整数计算机,程序可以接受三个参数
- c语言:错误C4473:“scanf_s”没有为格式字符串传递足够的参数
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- 《C语言及程序设计》实践项目——main函数的参数
- C语言中main函数的参数
- linux下的C语言带参数的main函数
- 【C语言】【笔试题】C语言main函数参数含义
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- C语言里面字符串操作是关于格式的参数
- C语言-----内存与指针(3) How 4000 do you pass a string to a function如何给一个函数传入字符串作为参数:
- 【c语言】为下面的函数原型编写函数定义,这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- C语言中main函数的参数
- C语言main函数的参数类型
- c语言main函数的参数
- 【C语言】为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- C语言中main函数的参数解释
- C语言main函数的参数及其返回值详细解析
- C语言中main函数的参数