ISO C89中strcpy的替代品
我必须为电话簿写一个函数。 我已经将电话簿定义为一个结构“联系人”数组,每个结构联系人包含姓名[]、姓氏[]、号码[]、地址[]字符串,这些字符串也是函数的参数。 问题是,当我必须将输入的参数保存在电话簿数组的位置“count”(即电话簿[count].name)时 VS2010说我不能使用“=”将字符串保存到数组中。 在互联网上,有些人说我可以使用指针或strcpy,但我的老师不希望我使用它们。 有其他选择吗? 我必须使用ISO C89(ANSI C)编码,我可以使用string.h和ctype.h库(我不能使用strcpy或strcat),我不能使用文件或指针。ISO C89中strcpy的替代品,c,arrays,string,function,ansi-c,C,Arrays,String,Function,Ansi C,我必须为电话簿写一个函数。 我已经将电话簿定义为一个结构“联系人”数组,每个结构联系人包含姓名[]、姓氏[]、号码[]、地址[]字符串,这些字符串也是函数的参数。 问题是,当我必须将输入的参数保存在电话簿数组的位置“count”(即电话簿[count].name)时 VS2010说我不能使用“=”将字符串保存到数组中。 在互联网上,有些人说我可以使用指针或strcpy,但我的老师不希望我使用它们。 有其他选择吗? 我必须使用ISO C89(ANSI C)编码,我可以使用string.h和ctyp
无论如何,我对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;
}
#包括
#定义缓冲区长度128
结构触点{
字符名称[缓冲区长度];
字符姓氏[缓冲区长度];
字符数[缓冲区长度];
字符地址[缓冲区长度];
};
内部主(空){
结构联系人电话簿[1];
整数计数=0;
字符参数[缓冲区长度];
int i;
/*输入一些参数*/
对于(i=0;i
或者,您可以使用,但很可能您的老师想用一个简单的for
循环来复制字符串。我为我的无知道歉,我对编码一无所知。我怎么能做到呢?使用force@Luke,使用。你不能使用指针,所以你不能使用memcpy
或strncpy
@101010:他们得到的是指针,而不是数组。OP不应该使用指针,因此他不能将数组传递给任何函数。不能在C中传递数组。