学不死就死里xue 发表于 2022-11-10 15:25:04

可变长数组

#include<stdio.h>

int main()
{
        int n,i;
        printf("请输入字符的个数:");
        scanf("%d",&n);
       
        char a;         \\这一段不明白,n+1有什么作用在这里
        printf("请开始输入字符:");
        getchar();
        for(i=0;i<n,i++)
        {
                scanf("%c",&a);
        }
        a='\0';          \\这一段也不明白
        printf("你输入的字符是:%s",a);
       
        return 0;
}

jhq999 发表于 2022-11-10 15:27:25

字符串一般都是以'\0'为结束标志,所以空字符串就是一个'\0'字符

jackz007 发表于 2022-11-10 15:36:09

本帖最后由 jackz007 于 2022-11-10 15:40 编辑

      char a; // 定义 a 为可以容纳 n + 1 个字符的字符数组,可以用于存储一个最长有 n 个字符的字符串
. . . . . .
      a='\0' ;// 设置一维字符数组 a 最后一个元素为字符串结束标志 '\0',这是操作系统所要求的,操作系统需要根据这个结束字符来确定字符串的长度

学不死就死里xue 发表于 2022-11-10 15:59:41

jackz007 发表于 2022-11-10 15:36


懂了 大佬
就是这个char a不管他加一万一千都没关系是不是 他只是定义一个内存
这个a='\0'还是不懂比如我定义n是2个 那这样不就把我第二个元素换了吗

jackz007 发表于 2022-11-10 16:07:17

本帖最后由 jackz007 于 2022-11-10 16:10 编辑

学不死就死里xue 发表于 2022-11-10 15:59
懂了 大佬
就是这个char a不管他加一万一千都没关系是不是 他只是定义一个内存
这个a='\0'还是 ...

      比如,你输入了 n = 8,那么,会定义一个拥有 9 个元素的一维数组 a,在你输入了 8 个字符后,a ~ a 都是你输入的字符,这时,让 a = '\0',那么,字符串 a 就诞生了,你可以用 printf("%s" , a) 直接把这个字符串打印出来。
      当你自己炮制字符串的时候,在最后那个字符的后面添加字符串结束标志字符 a = '\0' 非常重要,必须要有,如果不懂,那就死记!!!
页: [1]
查看完整版本: 可变长数组