Заголовочные файлы C и директива #define - PullRequest
1 голос
/ 01 ноября 2019

Заголовочный файл называется myh.h. В этой программе, как сохранить больше значения #define как p [] в этом массиве? Два значения хранятся, и как получить доступ к этим значениям в основной функции, где дается комментарий? В программе произошла ошибка компиляции.

#include <stdio.h>
#include <string.h>
#define p [] { "parthinb ", "baraiyab " }
#define u "parthin"
int account(char name[10])
{
    printf("Welcome %s", name);
    return 0;
}
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include "myh.h"

int main()
{
    char un[20], pass[10], c;
    int i;
start:
    printf("Enter USER NAME::");
    gets(un);
    printf("Enter Password of 8 Digitis::");
    for (i = 0; i < 8; i++)
    {
        c = getch();
        pass[i] = c;
        c = '*';
        printf("%c", c);
    }
    pass[i] = ' ';
    if (strcmp(un, u) == 0)
    {
        if (strcmp(pass, p[]) == 0)
        {
            printf("\nCORRECT\n");
            account(un);
        }
        else
        {
            printf("\nPassword mis-match\n");
            goto start;
        }
    }
  else
{
    printf("\nUSER Name or password does not match.\n");
    goto start;
}

}

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы не можете использовать #define для хранения массива char *. Проверьте эту ссылку . Вы можете определить свой массив как const, если вам не нужно изменять его позже:

const char* p[] = {"parthinb ", "baraiyab "};

, и вы можете получить доступ к каждому элементу p с его индексом:

p[index_of_that_element]
0 голосов
/ 01 ноября 2019

На поверхности, вы можете просто определить, хранить список значений p в переменных, и избежать '# define'

static char *p[] = { "parthinb ", "baraiyab " } ;

Вы можете обратиться к p [i] в ​​strcmp и т. Д.

...