gpt4 book ai didi

c - 我想要结构数组并且只复制一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:55 25 4
gpt4 key购买 nike

请先看这段代码。

#include <stdio.h>
#include <string.h>
#define N 3
struct body
{
char p[3];
char v[3];
char a[3];
double radius;
double mass;
};
struct body bodies[N];

int main() {
int a, b;
for(a = 0; a < 1; a++) {
for(b =0; b < 1; b++) {
strncpy(&bodies[a].p[b] , "asd", sizeof(3));
strncpy(&bodies[a].v[b] , "bbb", sizeof("bbb"));
strncpy(&bodies[a].a[b] , "ccc", sizeof("ccc"));
printf("\n1. = %s\n",&bodies[a].p[b]);
printf("\n2. = %s\n",&bodies[a].v[b]);
printf("\n3. = %s\n",&bodies[a].a[b]);
}
bodies[a].mass = 0;
bodies[a].radius= 1.0;
}
return 0;
}

结果是

  1. =asdbbbccc

  2. = bbbccc

  3. =抄送

我想要一行中的一个字符!例如

  1. = asd
  2. = bbb
  3. =抄送

为什么要这样打印? TT是指针问题吗?????

帮帮我~

最佳答案

你的问题在这里:

struct body
{
char p[3];
char v[3];
char a[3];
double radius;
double mass;
};

C 字符串是 null terminated ,这意味着他们需要一个额外的空字符 '\0' 来表示字符串的结尾,所以如果你想存储一个 3 个字符的字符串,你需要分配 4 个字符来容纳额外的字符空终止符。试试这个:

struct body
{
char p[4];
char v[4];
char a[4];
double radius;
double mass;
};

关于c - 我想要结构数组并且只复制一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37715419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com