【问题标题】:How to make an Array equal another array in C如何使一个数组等于C中的另一个数组
【发布时间】:2015-12-28 16:35:02
【问题描述】:

我无法在 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;



}

在 main 方法中,它不会让我将 inputInt1 分配给 converTwosComp 的返回值。

【问题讨论】:

  • char inputString1[11]; vs int* convertTwosComp(char *inputStringIn, int *inputIntIn); 你看出区别了吗?跨度>
  • 老实说我有点迷茫,但我想你是说我返回的是一个指针而不是一个数组......也许?
  • void *memcpy(void *dest, const void *src, size_t count);
  • @WeatherVane 你可以详细说明一下我不熟悉那个功能。
  • msdn.microsoft.com/en-us/library/dswaw1wk.aspx 在这种情况下,count 是要复制的 字节数,与指针运算中使用的数据大小无关。

标签: c arrays variables variable-assignment


【解决方案1】:

这可能是你需要的:

#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;
}

输出:

Array2 = Michi

【讨论】:

    【解决方案2】:

    你总是可以使用 for 循环来复制一个字符串,以防你不想使用 memcpy。

    #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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2021-08-31
      • 2021-05-12
      • 2013-10-17
      • 1970-01-01
      相关资源
      最近更新 更多