-1

電話帳の関数を作成する必要があります。電話帳を構造体「連絡先」の配列として定義しました。各構造体の連絡先には、関数のパラメーターでもある name[]、surname[]、number、[]address[] 文字列が含まれています。問題は、入力したパラメーターを電話帳配列の「カウント」の位置 (つまり、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 に答える