2016-08-02 4 views
0

Я не получаю выход для этой программы. // Указатель и структура Я хочу получить выход как 1Jatin. но для обновления указателя с использованием структуры. я не могу этого сделать. Он работает как int и float. но не как int и char. любой пожалуйста, разрешите это.Обновление указателя с целым числом и символом

#include <stdio.h> 

struct name{ 
    int a; 
    char b; 
}; 

int main(){ 
    struct name *ptr ,p; 
    ptr = &p; 
    printf("Enter integer:"); 
    scanf("%d", &(*ptr).a); 
    printf("Enter name:"); 
    scanf("%s", &(*ptr).b); 
    printf("Displaying:"); 
    printf("%d%s",(*ptr).a,(*ptr).b); 

    return 0; 
} 

ответ

2
#include <stdio.h> 

#define MAX_NAME_LENGTH 32 

struct name{ 
    int a; 
    char b[MAX_NAME_LENGTH]; 
}; 

int main(){ 
    struct name *ptr ,p; 
    ptr = &p; 
    printf("Enter integer:"); 
    scanf("%d", &ptr->a); 
    printf("Enter name:"); 
    scanf("%s", ptr->b); 
    printf("Displaying: "); 
    printf("%d %s\n",ptr->a,ptr->b); 

    return 0; 
} 

Многие вещи:

  1. Вы можете просто нам -> operator для разыменования указателя на своих членов
  2. C-строки являются нулем массивов символов. Это означает, что член b должен быть массивом, достаточным для хранения символов имени + нулевой ограничитель ('\0', 0x00, 0).