2016-08-02 9 views
0

ich bin nicht ausgegeben für dieses Programm zu bekommen. // Zeiger und Struktur Ich möchte als 1Jatin ausgegeben werden. aber zum Auffrischen des Zeigers unter Verwendung der Struktur. Ich kann das nicht tun. Es funktioniert als int und float. aber nicht als int und char. Irgendjemand hat das bitte gelöst.Refreshing Zeiger mit Integer- und Zeichen

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

Antwort

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

Viele Dinge:

  1. Sie können uns einfach -> operator zu dereferenzieren Zeiger auf seine Mitglieder
  2. C-Strings sind null beendet Arrays von Zeichen. Das bedeutet, dass b Mitglied ein Array sein muss groß genug, um einen Namen Zeichen + Nullabschluss zu speichern ('\0', 0x00, 0).