Как вернуть массив символов из char functionName (int arrayname [SIZE]);

Kelsey Williams спросил: 28 марта 2018 в 02:41 в: c

Назначение: Напишите функцию, предполагающую, что код UPC является аудио / видеопродуктом, и возвращает строку, указывающую, какой именно продукт. это последняя функция, которую я должен написать для этой лаборатории, и мне трудно понять, как вернуть массив символов из этой функции. Barcode array - это 12-значный код upc, введенный пользователем, а 10 пробелов в массиве указывают, какой тип носителя он имеет. После проверки того, что такое цифра, я хочу вернуть указанный массив символов на главную, чтобы печатать.

 char *getAudioVideoProductString(int barcodeArray[12]); int main()
 { 
    int barcodeArray[12];    do{
        printf("\nEnter UPC code: ");
        for(i = 0; i < 12; i++)
            {
             scanf("%d", &barcodeArray[i]);
            }
        avstring = getAudioVideoProductString(barcodeArray);
        for(a = 0; a != '\0'; a++)
            {
             printf("%c", avstring[a]);
            }        printf("\nAdd another UPC code [1 = add, 0 = quit]\n");
        scanf("%d",&end);
       }while(end !=0); return EXIT_SUCCESS;
}char *getAudioVideoProductString(int barcodeArray[12])
{
            int i;    if (barcodeArray[10] == 1)
    {
            char b[] = "12\"\ LP or Single";
            int lengthb = strlen(b);
            char a[] = malloc(sizeof(char)*100);
            for (i = 0; i < lengthb; i++)
         {
            a[i] = b[i];
         }
    }   if (barcodeArray[10] == 0| barcodeArray[10] == 3| barcodeArray[10] == 6)
    {
            char b[] = "Unassigned Audio Format";
            int lengthb = strlen(b);
            char a[] = malloc(sizeof(char)*100);
            for (i = 0; i < lengthb; i++)
         {
            a[i] = b[i];
         }
    }
    return a;
}

Когда я скомпилирую программу, я получаю следующие ошибки:

1 ответ

Есть решение
P__J__ ответил: 28 марта 2018 в 03:25
char a[] = malloc(sizeof(char)*100); //-<< wrong a is not the pointer only the arraychar *a = malloc(sizeof(char)*100);  // -<< correct. you need the pointer to assign the address of the allocated memory

Я думаю, вам нужно прочитать немного о массивах и указателях. Здесь на SO много тем о них. Просто выполните поиск.

PS Если вам нужен массив:

char a[100];