मैं समझने की कोशिश कर रहा हूं कि सी में इस छोटी सी समस्या को साफ/सुरक्षित तरीके से कैसे हल किया जाए।एक नया स्ट्रिंग मान सही तरीके से कैसे असाइन करें?
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char name[20];
char surname[20];
int unsigned age;
} person;
//Here i can pass strings as values...how does it works?
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
// This works as expected...
p.age = 25;
//...but the same approach doesn't work with a string
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
संकलक की त्रुटि है:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
मैं समझता हूँ कि सी (नहीं सी ++) कोई स्ट्रिंग प्रकार है और बदले तो एक और तरीका यह करना था ऐसा करने के लिए वर्ण की सरणियों का उपयोग करता है, यहाँ मेरी उदाहरण है वर्ण के संकेत पकड़ करने के लिए उदाहरण struct बदल:
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char *name;
char *surname;
int unsigned age;
} person;
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
p.age = 25;
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
यह अपेक्षा के अनुरूप काम करता है लेकिन मुझे आश्चर्य है कि अगर वहाँ एक बेहतर तरीका यह करने के लिए। धन्यवाद।
यदि हम 'मुख्य()' में संरचना घोषित करते हैं, तो व्यक्ति केवल इसके अंदर पहुंच सकता है। इसे वैश्विक – EsmaeelE