2016-06-29 5 views
0
 #include<stdio.h> 
     main() 
     {char *names[4]; 
     int i,a; 
     printf("ënter the guests names\n"); 
       for(i=0;i<=3;i++) 
       { 
       scanf("%s",names[i]); 
       } 
     char *yourname; 
     printf("\nenter your name "); 
     scanf("%c",yourname); 
        for(i=0;i<=3;i++) 
         {a=strcmp(names[i],yourname); 
         if(a==0) 
         printf("\nwelcome"); 
         break; 
         } 
    if(a!=0) 
    printf("\naccess denied"); 
    return 0; 
    } 

это программа для проверки вашей записи в шоу. сначала мы даем разрешенные имена &, тогда он запрашивает ваше имя, оно сравнивает ваше имя с именами в списке гостей.Причина ошибки времени выполнения в моей программе c &?

им получать ошибки во время выполнения, плз скажите мне correction.i хотите использовать указатели на строки так плз предложить поправки в существующую программу

, когда я запустить эту программу в devC++ после ввода первого имени дает program.exe перестал работать.

+1

Вы никогда не инициализируете указатели 'names' или' yourname', чтобы они были мусором. Кроме того, для вашей петли нужны скобки и, пожалуйста, начинайте отступать от кода, это сделает его более читаемым. –

+0

Вы сбросили плохо отформатированный код, даже не сообщив нам об ошибке. Пожалуйста, исправьте это, чтобы получить ответ. –

+0

любезно сделайте исправление в моем коде –

ответ

0

код будет выглядеть следующим образом:

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

    int main() 
    { 
     char *names[4]; 
     int i,a; 
     printf("ënter the guests names\n"); 
     for(i=0;i<=3;i++) { 
       names[i] = (char*) malloc(100 * sizeof(char)); 
      scanf("%s", names[i]); 
     } 
     char yourname[100]; 
     printf("\nenter your name "); 
     scanf("%s",yourname); 
     for(i=0;i<=3;i++) { 
      a = strcmp(names[i], yourname); 
      if (a == 0) break; 
     } 
     if (a==0) 
      printf("\nwelcome"); 
     else printf("\naccess denied"); 

     for(i=0;i<=3;i++) 
      free(names[i]); 

     return 0; 
    } 
+0

спасибо большое сэр –

0

Ваш код должен быть отформатирован таким образом, мы можем дать вам лучший ответ.

Теперь вы можете использовать свой вход, проверить совпадение гостей с вашим именем внутри цикла for, остановить цикл, когда совпадение найдено.

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    char names[4][20]; 
    int i = 0; 
    int a = 0; 
    printf("Enter guests names: \n"); 

    for(i=0; i<3; i++) 
    { 
     gets(names[i]); 
    } 
    char yourname[20]; 
    printf("\n Enter your name "); 
    gets(yourname); 

    printf("\n Verify access right:"); 
    for(i=0; i<3; i++) 
    {  
     a=strcmp(names[i], yourname); 
     if(a==0) 
     { 
      printf("\n welcome"); 
      break; 
     } 
     else 
     { 
      printf("\n access denied"); 
     } 
    } 

    return 0; 
} 

Хотя это выглядит как домашнее задание.

Смежные вопросы