-1

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

4

1 回答 1

1

一个简单的逐个字符分配将起作用。

#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;
}
于 2015-11-08T13:24:25.733 回答