C_字符数组

C语言学了好久了… 但是一直没什么用… 所以写点博客碰到什么问题写什么吧…

字符数组可以 Scanf

以前一直认为字符数组不能用字符串赋值,所以也就不能 scanf
但是最近写字符驱动的经历让我发现,这是错的

#include <stdio.h>
int main(){        
	char string[50];    
	printf("Please input: ");    
	scanf("%s", string);    
	printf("Output: %s\n", string);    
	return 0;
}

测试结果


字符串赋值给指针,字符数组

指针的赋值
// 此处参考:https://zhidao.baidu.com/question/183610522.html
// 这个挺好理解的
char a_test = 'a';
char *p = &a_test;

// 这个也挺常见的,但是还是重点讲讲
char *p = "hello";
// 这里这个双引号有 3 个作用
// (1) 常量区申请空间并放置字符串
// (2) 在字符串末尾加上 \0;这里需要辨析字符串 和 字符数组是有区别的;即 字符数组末尾 + \0 = 字符串
// (3) 返回该常量空间的地址
字符数组的赋值
  1. 初始化的赋值
  2. 不能直接用字符串常量向字符数组引用赋值
// 错误示范
char string[50];
string = "Hello World";
  1. 不能直接进行字符数组引用之间的赋值,此处注意跟其他高级语言的区分
// 错误示范
char a = "Hello";
char b = "World";
a = b;
字符数组的输出
// 此处转自:https://blog.csdn.net/Hello_MyDream/article/details/82502633
int main(int argc, char *argv[])
{
    char arr[16] = {0};
    /*scanf与%s同时使用时,遇到键盘输入的空格、回车就会结束输入*/
    //scanf("%s", arr);
    
    /*1.遇到空格不会结束输入
      2.但是不会检测空间是否足够,容易造成内存越界(内存污染、空间污染等描述均是相同)。
      3.不接收回车*/
    //gets(arr);
    
    /*1.遇到空格不会结束输入
      2.检测空间是否足够,当输入超过数组容量时,会自动舍弃超出部分,而不会报错。
      3.可是操作文件时使用,所以接收回车。*/
    fgets(arr, sizeof(arr), stdin);
    
    //printf("%s", arr);
    //puts(arr);//输出一个字符串,自动添加换行符
    //fputs(arr, stdout);//输出一个字符串,可以指定输出文件
    
    printf("%d\n", strlen(arr));//输出字符串大小,不包含0。
    printf("%d\n", sizeof(arr));//输出数组所占字节数,与字符串大小无关。
 
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值