gpt4 book ai didi

c - ISO C89 中 strcpy 的替代方案

转载 作者:行者123 更新时间:2023-11-30 20:24:25 25 4
gpt4 key购买 nike

我必须为电话簿编写一个函数。我将电话簿定义为结构体“contacts”的数组,每个结构体联系人包含 name[],surname[],number,[]address[] 字符串,这也是函数的参数。问题是,当我必须将输入的参数保存在电话簿数组的“count”位置(即电话簿[count].name)时VS 2010 说我不能使用“=”将字符串保存到数组中。网上有人说我可以使用指针或strcpy,但我的老师不希望我使用它们。有一些替代方案吗?我必须使用 ISO C89(ANSI C) 进行编码,并且可以使用 string.h 和 ctype.h 库(我不能使用 strcpy 或 strcat),并且不能使用文件或指针。无论如何,我不确定 strncpy。

最佳答案

简单的逐个字符分配就可以了。

#include <stdio.h>

#define BUFFER_LENGTH 128

struct contacts {
char name[BUFFER_LENGTH];
char surname[BUFFER_LENGTH];
char number[BUFFER_LENGTH];
char address[BUFFER_LENGTH];
};

int main(void) {
struct contacts phonebook[1];
int count = 0;
char parameter[BUFFER_LENGTH];
int i;

/* enter some parameter */
for (i = 0; i < BUFFER_LENGTH - 1; i++) {
int input = getchar();
if (input == '\n' || input == EOF) break;
parameter[i] = input;
}
parameter[i] = '\0';

/* save it to the array */
for (i = 0;; i++) {
if ((phonebook[count].name[i] = parameter[i]) == '\0') break;
}

/* print the saved parameter for checking */
puts(phonebook[count].name);

return 0;
}

关于c - ISO C89 中 strcpy 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594311/

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