c - 在结构中添加字符

标签 c arrays data-structures struct

<分区>

为什么我不能将 name 添加到 data 函数中?

如果我运行这段代码

data->userName = name;

那一行是错误的。为什么我不能将 userName 设置为 name

#import <Foundation/Foundation.h>
typedef struct User {
    char userName[5];
    int  userAge;
} User;
int roomNum = 0;
void data (User* data, int age, char* name);

main () {
    int age;
    char name[5];
    User list[10] = {};
    for (int i = 0; i<3; i++) {
        scanf("%d",&age);
        scanf("%s",name);

        data(&list[roomNum],age,name);
        roomNum ++;
    }

    NSLog(@"%d   %s",list[0].userAge,list [0].userName);
    NSLog(@"%d   %s",list[1].userAge,list[1].userName);
    NSLog(@"%d   %s",list[2].userAge,list[2].userName);
}

void data (User* data, int age, char* name){
    NSLog(@"%s",name);
    (*data).userAge = age;
    data->userName = name;
}

最佳答案

我推荐一个更正,而不是这个

scanf("%s",name);

试试这个

scanf("%4s",name);
  /*    ^ should be sizeof(name) - 1 */

这样你就可以防止 name 溢出,并将值存储在结构中而不是

data->userName = name;

使用

strcpy(data->userName, name);

还有,你为什么要这样做

(*data).userAge = age;

使用一致的语法要么坚持上一行,要么

data->userAge = age;

关于c - 在结构中添加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116407/

相关文章:

c - 接收C套接字数据分配二维数组

data-structures - 如何将 flutter 项目从 windows 导入到 linux?

c - 通过重复存储单词的最佳树型

c - 用指针打印字符的问题

C : Checking if an item is in a list

java - 如何从对象中的 getter 中获取数组值?

Java读取学生记录并计算每次测验的高低和平均值

c - 向条件变量发出信号(pthreads)

c - 在C语言中使用指针有什么好处?

python - 如何在元组中复制元素 n 次