本文目录一览:
C语言 如何定义字符串数组
C语言字符串数组中的每一个元素均为指针,即有诸形如“ptr_array[i]”的指针。由于数组元素均为指针,因此ptr_array[i]是指第i+1个元素的指针。
例:如二维指针数组的定义为:char *ptr_array[3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};
扩展资料
字符串数组数组元素表示方法:
数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。
例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。
参考资料来源:百度百科—指针数组
c语言字符串跟字符数组的定义都一样,那如何区分呢?
实现目的
我们在用C语言编写程序时,经常会遇到使用字符串数组的情况,这种数组的特点是, 数组中的每个元素都是一个字符串,但每个字符串的长度却不相同。如果你使用C++语言进行编程的话,实现起来相对比较简单,只需直接选择标准模板库的字符串string类,在代码中定义该类的一个数组即可实现。现在的问题是,在纯C语言中如何定义这样的一个字符串数组呢?
如对于下面的一个字符串数组:
str = {
“I love C.”,
“I love C++.”,
“I love JAVA.”,
“I love Python.”,
“I love LabVIEW.”
}
下面给出C语言中的两种定义方法。
方法1:定义一个char类型的二维数组
这种方法是通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度。如对于上面的数组,C语言的定义代码如下:
在取该数组的每个字符串时,直接对行索引即可。
方法2:定义一个指向char类型的指针数组
这种方法是通过定义一个指向char类型的指针数组实现,数组中的每个元素都是一个指针,通过该指针可得到数组中的每个字符串。如对于上面的数组,C语言的定义代码如下:
两种方法对比
上面的两种方法都可以实现我们的目的,但在内存的占用上两种方法不同。第1种方法定义了一个5行20列的二维数组,即每个字符串所占的字节长度都为20个,所以共需要占用100个字节,而第2种方法是定义的指针数组,每个指针指向的字符串占用的字节长度是其实际长度,所以其总的长度肯定小于100个字节。综合来讲,第1种方法相对于第2种方法,造成了存储空间的浪费情况。
字符串数组定义及使用的完整测试代码
下面给出这个例子的完整的C语言测试代码,如下图所示:
程序运行结果如下图所示:
总结
一般在C语言中定义字符串的数组时,推荐使用第2种方法,特别是对于单片机、嵌入式等方面的程序开发时,可以充分利用有限的硬件资源,避免存储空间的浪费。
C语言编程?字符数组与字符串?
void stringLower(char *str){
while (*str != '\0')
{ if (*str ='A' *str = 'Z')
*str += 32;
str++;
}
}
int main( int argc , char *argv[] )
{ char str[20];
scanf("%s",str);
stringLower(str);
printf("%s\n",str);
运行结果
C语言中字符数组及字符串处理函数
一、字符数组的定义
一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。
char str[20];
二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。
char country[10][20];
country[i]:第i个字符串
二.字符数组的初始化
字符数组的初始化.
1.可以通过为每个数组元素指定初值字符来实现。
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
char str[ ]={"I am happy"}; 可以省略花括号,如下所示
char str[ ]="I am happy";
char country[10][20]={“china”,”japanese”,……};
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[15];
str="I am happy";
strcpy(str, "I am happy");
不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。
‘a’ “a”区别
三、字符数组的引用
字符数组的逐个字符引用,与引用数值数组元素类似。
(1)字符数组的输入
除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。
例如:
char str[10];
…… for(i=0; i10; i++)
{ scanf(\"%c\", str);
fflush(stdin); /*清除键盘输入缓冲区*/
}
这里只是一部分具体你查看这里:
c语言如何将多个字符串放入数组
方法一:使用二维字符数组,示例:
#includestdio.h
#includestdlib.h
int main(int argc, char *argv[])
{
char c[][5] = {"abc","haha","no"};
for (int i=0; i3; i++)
{
printf("%s\n",c[i]);
}
return 0;
}
方法二:使用 string 数组,示例:
#includestdio.h
#includestdlib.h
#include string.h
int main(int argc, char *argv[])
{
string s[] = {"abc","haha","no"};
for (int i=0; i3; i++)
{
printf("%s\n",s[i].c_str());
}
return 0;
}