C语言7数组下(基础篇)

目录

字符数组

字符数组初始化

字符串 

用字符串常量初始化

 练习

从键盘输入字符串并输出-scanf

字符串输入函数-gets 

​编辑

字符串输出函数-puts



字符数组

字符数组是元素的数据类型为字符类型的数组

charc[10];

charch[3][4];

字符数组初始化

 逐个字符赋值,没有赋值的直接给与\0

#include <stdio.h>
 
int main() {
    //char ch[5] = {'H', 'e', 'l', 'l', 'o'};
    //char ch[5] = {'H', 'e', 'l'};
    char ch[5] = {'H', 'e', 'l', '\0', '\0'};
    int i;
 
    for (i = 0; i < sizeof(ch) / sizeof(char); i++) {
        printf("%d %c\n", ch[i], ch[i]);
    }
 
    return 0;
}

 调试可以看到内存分配的未赋值都是'\0'

字符串 

C语言中无字符串变量,一般用字符数组处理字符串

字符串结束标志:‘\0’ 

用字符串常量初始化

#include <stdio.h>
 
int main() {
    //char ch[6] = {"hello"};
    //char ch[6] = "hello";
    char ch[] = "hello";
    int i;
 
    for (i = 0; i < 6; i++) {
        printf("%d - %c\n", ch[i], ch[i]);
    }
 
    printf("sizeof(ch)=%ld\n", sizeof(ch));
 
    return 0;
}

字符串结尾是'\0',内存分配的未赋值也是'\0'

假如字符数组的空间和字符串长度一致,也就是少了'0'

#include <stdio.h>

int main() {
    //char ch[6] = {"hello"};
    //char ch[6] = "hello";
    char ch[5] = "hello";//无法分配'\0'
    int i;

    for (i = 0; i < 6; i++) {
        printf("%d - %c\n", ch[i], ch[i]);
    }

    printf("%s\n", ch);

    return 0;
}

会一直找到有'\0'的地方,输出结果不正常

 

用%s打印字符串

#include <stdio.h>

int main() {
    char ch[] = "hello";
    char ch2[5] = { 'h', 'e', 'l', 'l', 'o' };

    printf("ch:%s %p\n", ch, &ch[0]);
    printf("ch2:%s %p\n", ch2, &ch2[0]);

    return 0;
}

 可以看到字符数组ch2一直往后面找'\0'

 练习

从键盘输入字符串并输出-scanf

#include <stdio.h>
 
int main() {
    char ch[50];
 
    //scanf("%s", ch);
    scanf("%[^\n]", ch);/*
    如果要使用scanf输入字符串,并且字符串中可能包含
    空格,则需要转义字符%[^\n],这样可以输入以换行符为结尾的字符串,
    而不管它中间是否包含空格*/
    printf("%s\n", ch);
 
    return 0;
}

 

字符串输入函数-gets 

char*gets(char*s)

从键盘输入一以回车结束的字符串放入字符数组,并自动加‘\0’

gets()函数比scanf简洁,输入的字符串中有空格也可以输入

输入串长度要注意,保证数组内存空间够用‐gets函数不建议使用,建议使用fgets

#include <stdio.h>
 
int main() {
    char ch[10];
    gets(ch);
    //scanf("%s", ch);
    printf("%s\n", ch);
 
    return 0;
}

超过数组内存空间报错

字符串输出函数-puts

intputs(constchar*s)

功能:向显示器输出字符串,并追加换行符

说明:字符数组必须以‘\0’结束

#include <stdio.h>
 
int main() {
    char ch[10] = {" a b c"};
 
    puts(ch);
    printf("ch:%s", ch);
 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值