今天在学习C语言文件操作的时候使用到了字符串,发现了一个有意思的小错误,我们都知道C语言是没有字符串类型,所以一般都是以字符型数组来进行字符串的储存。这样会带来一个小麻烦,当我只需要输入长度为10的字符串时往往需要申请大于10的空间,如果选择比较合理就会申请一个长度为10字符型数组,当我们不确定的时候往往会申请更大的空间来储存以确保不会溢出。有一个字符型指针就能解决这个问题,比如char ch*="hello world",或者给字符型指针赋值一个字符数组的地址,在输入的时候就不能直接给定义的字符型指针赋值。
比如下面这个方式就是错误的
#include<stdio.h>
int main()
{
char *ch;
gets(ch);
printf("%s",ch);
return 0;
}
在给这个ch指针赋值的时候必须申请储存空间,不能直接赋值。下面是申请空间后使用可食用的代码:
#include<stdio.h>
#include<malloc.h>
int main()
{
char *ch;
ch=(char*)malloc(sizeof(char)*10);
printf("please input a string:");
gets(ch);
printf("%s",ch);
return 0;
}
代码中的malloc函数申请了10个字符型的空间,也可以使用一个数组来储存.
在本次学习的过程中发现了这个小问题,本人是刚开始学习编程语言的菜鸟,有误的地方期待大佬雅正。