C语言程序设计---6:利用数组处理批量数据

二维数组

C语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素,第一行元素和第二行元素是线性的、连续存放的。

数组的定义:

#include<stdio.h>
void main()
{
    /* 一维数组 */
    int a1[5];
    int a2[5] = {1,2,3};
    /* 1  2  3  0  0 */
    int a3[] = {1,2,3,4,5}; 

    /* 二维数组 */
    int b1[2][3];
    /* 未赋值的均为0 */
    int b2[2][3] = {{11,12},{22}};
    /* 11  12  0
       22  0   0 */
    /* 如果对全部元素都赋值,那么第一维的长度可以不指定,第二维的长度不能省 */
    int b3[][3] = {11,12,13,21,22,23};
    /* 上面的数组有2行,下面的数组有3行 */
    int b4[][3] = {{11,12},{21},{31,32}};
    /* 11  12  0
       21  0   0
       31  32  0 */
}

字符串

  • 在C语言中,是将字符串作为字符数组来处理的。
  • 为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符‘\0’作为标志。
  • 在C程序中依靠检测‘\0’的位置来判断字符串是否结束,而不是根据数组的长度来决定字符串长度。
  • ‘\0’代表ASCII码为0的字符,是一个空操作符,不可以显示,它什么也不做。
  • char c[] = “I am happy”;
  • 在C语言中,数组名代表该数组的起始地址。
char str1[5],str2[5],str3[5];
/* str1 已经是地址了,所以不需要加& */
scanf("%s%s%s",str1,str2,str3);
  • printf("%d",str1);可以得到数组的起始地址
  • strcmp,空格字符参加比较,它“大于”任何字母字符。

    scanfgets()的区别:

  • scanf 输入时,字符串中间的空格、tab均作为字符串的分隔符。

  • gets()输入时,能输入空格,并不作为分隔符,因为gets()仅输入一个字符串。

字符串处理函数

gets(str)和puts(str)

gets(str)的返回值是字符数组str的起始地址。记住,数组末尾会加一个‘\0’

strcat(str1,str2)

将str2接到str2后面。

  • 连接后,str1后面的‘\0’取消,只在新字符串最后保留‘\0’
  • str1必须足够大,可以将str2拼接到后面。

strcpy(str1,str2)和strncpy(str1,str2,n)

strcpy(str1,str2)将str2复制到str1中去。

  • str2必须足够大,至少大于str1的长度。
strcpy(str1,"china");   /* 正确 */
str1 = “china”;         /* 错误 */
str1 =  str2;           /* 错误 */

strncpy(str1,str2,n)将str2的前面n个字符复制到str1中去。

  • str1中n之后的字符不变。

strcmp(str1,str2)

对str1和str2自左至右逐个字符比较(按ASCII码值大小比较),直到出现不同的字符或者‘\0’为止。

  • str1 > str2,函数值为 1
  • str1 < str2,函数值为 -1
  • str1 == str2,函数值为 0

strlen(str)

测量str的实际长度(不包括‘\0’在内)。

char str[10] = "china";
pirntf(%d\n,strlen(str));

结果:5

strlwr()和strupr()

大小写转换。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值