c语言基础(2):输入一段未知长度的字符,然后输出

输入一段未知长度的字符,然后输出

#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'

猜你喜欢

转载自blog.csdn.net/weixin_41215479/article/details/80959821