2015-09-30 2 views
0

У меня возникли проблемы с созданием массива, равным другому массиву в c. в основном методе он не позволит мне присваивать inputInt1 возвращаемому значению convertTwosComp.Как сделать массив равным другому массиву в C

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



} 

в основной метод не позволит мне присвоить inputInt1 к возвращаемому значению converTwosComp.

+0

** символ inputString1 [11]; ** ** против Int * convertTwosComp (полукокса * inputStringIn, Int * inputIntIn); ** вы видите разницу? – Michi

+0

честно, я немного потерялся, но я думаю, вы говорите, что я возвращаю указатель, а не массив ... может быть? – Thorx99

+0

'void * memcpy (void * dest, const void * src, size_t count);' –

ответ

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

1

Вы всегда можете использовать цикл, чтобы скопировать строку, в случае, если не хотите использовать 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; 
} 
Смежные вопросы