您的位置:

c语言数组和字符串方法,字符串数组C语言

本文目录一览:

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;

}