2012-01-31 31 views
6

मुझे सी प्रोग्रामिंग के साथ मदद की ज़रूरत है।टाइप किए गए फ़ंक्शन के साथ स्ट्रिंग को पास करने के लिए

struct Product { 
    int code; 
    char *name; 
    char *spec; 
    int quantity; 
    float price; 
}; 

typedef struct Product products[8]; 
products product = { 
    {100, "Mouse", "Ottico", 10, 8.30}, 
    {101, "Tastiera", "Wireless", 6, 15.50}, 
    {102, "Monitor", "LCD", 3, 150.25}, 
    {103, "Webcam", "USB", 12, 12.00}, 
    {104, "Stampante", "A Inchiostro", 6, 100.00}, 
    {105, "Scanner", "Alta Risoluzione", 9, 70.50}, 
    {106, "Router", "300 Mbps", 10, 80.30}, 
    {107, "Lettore Mp3", "10 GB", 16, 100.00} 
    }; 

कृपया ऊपर इतालवी भाषा के उपयोग की उपेक्षा: मैं निम्नलिखित स्थिति है।

मैं एक समारोह में "उत्पाद" नामक structs की सरणी पारित करना चाहता हूं। उदाहरण के लिए,

product[1].name = "Computer" 

लेकिन एक समारोह के अंदर की तरह कुछ, मैं इसे कैसे क्या करना चाहिए करने के लिए अगर मैं चाहता था? मैं जानना चाहता हूं कि उस फ़ंक्शन को मुख्य() से कैसे कॉल करें और मेरे हेडर फ़ाइल में प्रोटोटाइप कैसे लिखें।

किसी भी मदद के लिए अग्रिम धन्यवाद।

संपादित

मैं आप इस परीक्षण कार्यक्रम दे रहा हूँ। यह काम नहीं कर रहा है और मुख्य में काम करने के लिए भी कॉल नहीं है। यह सिर्फ संकलित नहीं करता है।

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

void test(Card *card); 

int main() 
{ 
    struct Card { 
     char *type; 
     char *name; 
    }; 

    typedef struct Card cards[2]; 
    cards card = {{"Hi", "Hi"}, {"Foo", "Foo"}}; 
    return 0; 
} 

void test(Card *card) { 
    printf("%s", card[1].type); 
} 

उत्तर

6

यहाँ:

void foo(struct Product *bla) 
{ 
    bla[1].name = "Computer"; 
} 

या अपने प्रकार उपनाम का उपयोग

void foo(products bla) 
{ 
    bla[1].name = "Computer"; 
} 

तो इस तरह फ़ंक्शन को कॉल करें:

foo(product); 
+0

हाय ने मुख्य पोस्ट संपादित किया है, क्या आप जांच सकते हैं कि मेरे वाक्यविन्यास में क्या गलत है? – wiredmark

+0

@ मार्सेलो सिल्वेस्ट्री 'शून्य परीक्षण (कार्ड * कार्ड)' में: आपके कार्यक्रम में 'कार्ड' नाम का कोई प्रकार नहीं है। 'स्ट्रक्चर कार्ड' नामक एक प्रकार और 'कार्ड' नामक एक प्रकार है लेकिन कोई 'कार्ड' नहीं है। – ouah

2

जब से तुम typedef (जो आपके उदाहरण में एक struct कीवर्ड याद आ रही है, वैसे) है, तो आप सिर्फ इतना है कि प्रकार समारोह प्रोटोटाइप में उपयोग कर सकते हैं:

void func(products p); 

एक समारोह प्रदर्शन विशिष्ट आपरेशन के लिए कहा के बारे में हो सकता है:

:

void func(products p) 
{ 
    p[1].name = "Computer"; 
} 

आप इसे पसंद कॉल कर सकते हैं

func(product); 

कहीं से भी जहां product गुंजाइश है।

+0

हाय, आपके उत्तर के लिए धन्यवाद। मुझे निम्न त्रुटि मिलती है: त्रुटि: अपेक्षित ')' पी ' से पहले मेरे प्रोटोटाइप में। – wiredmark

+0

क्या प्रोटोटाइप से पहले 'उत्पादों' घोषित किया गया है? उस प्रोटोटाइप को समझने के लिए टाइप परिभाषा की आवश्यकता होती है। –

0
typedef struct tag_Product { 
    int code; 
    char *name; 
    char *spec; 
    int quantity; 
    float price; 
} PRODUCT; 

PRODUCT products[8] = { 
    {100, "Mouse", "Ottico", 10, 8.30}, 
    {101, "Tastiera", "Wireless", 6, 15.50}, 
    {102, "Monitor", "LCD", 3, 150.25}, 
    {103, "Webcam", "USB", 12, 12.00}, 
    {104, "Stampante", "A Inchiostro", 6, 100.00}, 
    {105, "Scanner", "Alta Risoluzione", 9, 70.50}, 
    {106, "Router", "300 Mbps", 10, 80.30}, 
    {107, "Lettore Mp3", "10 GB", 16, 100.00} 
    }; 

void MyFunction(PRODUCT *pProduct) 
{ 
    pProduct->code = 0; // sample 
} 

void main() 
{ 
    MyFunction(&products[2]); // sample 
} 
संबंधित मुद्दे