输入一段未知长度的字符,然后输出
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
struct node
{
char arr[0];
};
int main()
{
char buf[100];
printf("请输入一串字符");
fgets(buf, 100, stdin); //通过键盘输入数据到字符数组中
struct node *p = malloc(sizeof(struct node)+strlen(buf)+1);
//结构体的内存大小+字符数组的大小+'\0' 整个结构体的内存大小
strncpy(p->arr, buf, strlen(buf)+1); //将buf数组里的数据负责到arr中,strlen(buf)+1限制长度防止越界
printf("字符数组为: %sh", p->arr);
return 0;
}
c语言中的一些函数
char a[5]={"abc"};
char s1[5] = {'a', 'b', 'c', '\0'};
char s2[5] = {"abc1"};
char s3[5] = "abc" ;
strlen(a); //数组内已经存放的数据 等于 3
sizeof(a); //数组的整体大小 等于 5
printf("%d\n",strlen(s2));
printf("%d\n",sizeof(s2));
strcpy(s1, s2); //将数组s2复制到s1中,s1中的数据被覆盖
strncpy(s1, s2, 5); //规定s1的长度,防止越界,这里的 5 只能输入 4 个数据因为还要加一个'\0',相当于s1[4]
strcat(s1, s2); //将数组s2连接到s1后
strncat(s1, s2, 1); // 只能为1,s1只剩下两个位置,给一个s2连接,还有一个'\0'