鱼C论坛

 找回密码
 立即注册
查看: 2193|回复: 8

[已解决]结构体成员定义问题

[复制链接]
发表于 2018-2-28 19:13:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>

struct node
{
        float x, y;
        char s[10];
}point, *p = &point;

void main()
{
        p->s = "a";
        printf("%s\n", p->s);
}




想问一下         p->s = "a"; 这句应该怎么改呢?



还有  p->x = 2.0        (*p).y = 3.0        point.x = 2.0      这三个表达式是不是都是正确的呀?


最佳答案
2018-3-1 12:13:39
a98 发表于 2018-3-1 12:11
我想给结构体p的s赋值字符串应该怎么写呢

可以用strcpy函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-28 19:36:11 | 显示全部楼层
本帖最后由 最帅的老饼 于 2018-2-28 19:39 编辑

#include<stdio.h>

struct node
{
        float x, y;
        char s[10];
}point, *p = &point;

void main()
{
        p->s[5] = 'a';
        printf("%c\n", p->s[5]);
        
        p->x = 2.0 ;
        printf("%f\n", p->x);
        
                 (*p).y = 3.0 ;
                printf("%f\n", p->y);
                printf("%f\n", point.y);
                  
                point.x = 4.0 ;
                printf("%f\n", p->x);
}


输出:
a
2.0000
3.0000
3.0000
4.0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 20:07:25 | 显示全部楼层

能不能再问一下  如果想输出字符串应该怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 09:01:41 | 显示全部楼层
想问一下         p->s = "a"; 这句应该怎么改呢?
你想要实现什么?如果是给结构p的s进行赋值,可以直接赋值即可



还有  p->x = 2.0        (*p).y = 3.0        point.x = 2.0      这三个表达式是不是都是正确的呀?
都对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-1 12:11:25 | 显示全部楼层
BngThea 发表于 2018-3-1 09:01
想问一下         p->s = "a"; 这句应该怎么改呢?
你想要实现什么?如果是给结构p的s进行赋值,可以直接 ...

我想给结构体p的s赋值字符串应该怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 12:13:39 | 显示全部楼层    本楼为最佳答案   
a98 发表于 2018-3-1 12:11
我想给结构体p的s赋值字符串应该怎么写呢

可以用strcpy函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-1 12:26:48 | 显示全部楼层
BngThea 发表于 2018-3-1 12:13
可以用strcpy函数

嗯可以 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 00:14:20 | 显示全部楼层
本帖最后由 最帅的老饼 于 2018-3-2 00:19 编辑

在C 中其实没有字符串,字符串只是 char组数 只是在数组尾加个 '\0'

例如:
#include <stdio.h>

int main()
{
char a[8]= {'a','b','c','d','e','f','g','h'};

char b[8]= {'a','b','c','d','e','f','g','\0'};

char c[8]= {'a','b','c','d','e','f','g',0};

char d[8]="abcdefg";

char e[8]="abcdefgh";

printf ("char a[]=%s\n", &a[0]);
printf ("char b[]=%s\n", b);
printf ("char c[]=%s\n", c);
printf ("char d[]=%s\n", d);
printf ("char e[]=%s\n", e);

return 0 ;
}

b[8] c[8] d[8]  这3个数组的内容是一样的,它们的输出都是一样。

数组 a[8] 和 e[8]  输出都不正常,  因为printf ( ) 的 %s 输出是直到 0 才停止 ,但数组 a[8]  和 e[8] 最后一位都不是 0 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-2 21:03:02 | 显示全部楼层
最帅的老饼 发表于 2018-3-2 00:14
在C 中其实没有字符串,字符串只是 char组数 只是在数组尾加个 '\0'

例如:

嗯谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 15:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表