Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ISO C89中strcpy的替代品_C_Arrays_String_Function_Ansi C - Fatal编程技术网

ISO C89中strcpy的替代品

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

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