電話帳の関数を作成する必要があります。電話帳を構造体「連絡先」の配列として定義しました。各構造体の連絡先には、関数のパラメーターでもある name[]、surname[]、number、[]address[] 文字列が含まれています。問題は、入力したパラメーターを電話帳配列の「カウント」の位置 (つまり、phonebook[count].name) に保存する必要がある場合、VS 2010 で「=」を使用して文字列を配列に保存できないと言われたことです。インターネット上では、ポインターや strcpy を使用できると言う人もいましたが、先生は私にそれらを使用することを望んでいません。いくつかの代替手段はありますか?ISO C89 (ANSI C) でコーディングする必要があり、string.h および ctype.h ライブラリ (strcpy または strcat は使用できません) を使用でき、ファイルまたはポインターは使用できません。とにかく、strncpyについてはわかりません。
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 に答える