在C语言中如何使一个数组等于另一个数组

在C语言中如何使一个数组等于另一个数组,c,arrays,variables,variable-assignment,C,Arrays,Variables,Variable Assignment,在c中,我很难使一个数组等于另一个数组。 在main方法中,它不允许我将inputInt1分配给converTwosComp的返回值 #include <stdio.h> #include <stdlib.h> int validChecker(char *input_StringIn); int* convertTwosComp(char *inputStringIn, int *inputIntIn); int main(void) { char inputS

在c中,我很难使一个数组等于另一个数组。 在main方法中,它不允许我将inputInt1分配给converTwosComp的返回值

#include <stdio.h>
#include <stdlib.h>
int validChecker(char *input_StringIn);
int* convertTwosComp(char *inputStringIn, int *inputIntIn);
int main(void) {
    char inputString1[11];
    char inputString2[11];
    int inputInt1[11];
    int inputInt2[11];

    printf(" is ");
    inputInt1 = convertTwosComp(inputString1, inputInt1);
    for(i = 0; inputString1[i]; i++){
        printf("%d", inputInt1[i]);
    }


    int * convertTwosComp(char *inputStringIn, int *inputIntIn){
    int digit;
    int i;

    if((inputStringIn[0] == '+') ||(inputStringIn[0]) == '0'){
        inputStringIn[0] = 0;
    }
    if(inputStringIn[0] == '-'){
        inputStringIn[0] = 1;
    }
    for(i = 0; inputStringIn[i]; i++){
        digit = inputStringIn[i] - '0';
        inputStringIn[i] = digit;
    }

    for(i = 0; inputIntIn[i]; i++){
        if(inputIntIn[i] == 0){
            inputIntIn[i] = 1;
        }
        if(inputIntIn[i] == 1){
            inputIntIn[i] = 0;
        }
    }
    return inputIntIn;



}
#包括
#包括
int validChecker(字符*输入字符串);
int*converttowscomp(char*inputStringIn,int*inputin);
内部主(空){
char inputString1[11];
char inputString2[11];
int输入1[11];
int输入2[11];
printf(“is”);
InputT1=convertTwosComp(inputString1,InputT1);
对于(i=0;inputString1[i];i++){
printf(“%d”,输入1[i]);
}
int*convertTwosComp(char*inputStringIn,int*inputin){
整数位数;
int i;
如果((inputStringIn[0]='+')| |(inputStringIn[0])=='0')){
inputStringIn[0]=0;
}
如果(inputStringIn[0]='-'){
inputStringIn[0]=1;
}
对于(i=0;inputStringIn[i];i++){
数字=inputStringIn[i]-“0”;
inputStringIn[i]=数字;
}
for(i=0;inputin[i];i++){
if(inputin[i]==0){
inputin[i]=1;
}
if(inputin[i]==1){
inputin[i]=0;
}
}
返回输入;
}

在main方法中,它不允许我将inputin1分配给converTwosComp的返回值。

这是您可能需要的:

#include <stdio.h>
#include <stdlib.h>
int validChecker(char *input_StringIn);
int* convertTwosComp(char *inputStringIn, int *inputIntIn);
int main(void) {
    char inputString1[11];
    char inputString2[11];
    int inputInt1[11];
    int inputInt2[11];

    printf(" is ");
    inputInt1 = convertTwosComp(inputString1, inputInt1);
    for(i = 0; inputString1[i]; i++){
        printf("%d", inputInt1[i]);
    }


    int * convertTwosComp(char *inputStringIn, int *inputIntIn){
    int digit;
    int i;

    if((inputStringIn[0] == '+') ||(inputStringIn[0]) == '0'){
        inputStringIn[0] = 0;
    }
    if(inputStringIn[0] == '-'){
        inputStringIn[0] = 1;
    }
    for(i = 0; inputStringIn[i]; i++){
        digit = inputStringIn[i] - '0';
        inputStringIn[i] = digit;
    }

    for(i = 0; inputIntIn[i]; i++){
        if(inputIntIn[i] == 0){
            inputIntIn[i] = 1;
        }
        if(inputIntIn[i] == 1){
            inputIntIn[i] = 0;
        }
    }
    return inputIntIn;



}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
    char array1[] = "Michi";
    size_t len = strlen(array1);
    char *array2 = malloc(len+1);

    memcpy(array2, array1, len+1);

    printf("Array2 = %s\n",array2);
    free(array2);
    return 0;
}
#包括
#包括
#包括
内部主(空){
字符数组1[]=“Michi”;
尺寸长度=strlen(阵列1);
char*array2=malloc(len+1);
memcpy(array2,array1,len+1);
printf(“Array2=%s\n”,Array2);
免费(array2);
返回0;
}
输出:

Array2=Michi


如果不想使用memcpy,您可以始终使用for循环来复制字符串

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char one[30];
    char two[30];
    while(fgets(one,sizeof(one),stdin))
    {
        int len = strlen(one);
        for(int i = 0; i < (len + 1); i++)
        {
            two[i] = one[i];
        }
        printf("%s", two);
        break;
    }
    return EXIT_SUCCESS;
}
#包括
#包括
#包括
内部主(空)
{
char-one[30];
char-two[30];
而(fgets(一个,sizeof(一个),stdin))
{
int len=strlen(一个);
对于(int i=0;i<(len+1);i++)
{
两个[i]=一个[i];
}
printf(“%s”,两个);
打破
}
返回退出成功;
}

char-inputString1[11];vs-int*convertTwosComp(char*inputStringIn,int*inputin);你看到区别了吗?老实说,我有点不知所措,但我想你是说我返回的是指针而不是数组……也许?
void*memcpy(void*dest,const void*src,size\t count)
@WeatherVane如果您能详细说明一下,我对该函数不太熟悉。在这种情况下,
count
是要复制的字节数,与指针算法使用的数据大小无关。