में रीयलोक का उपयोग करना रीयलोक के उपयोग के संदर्भ में कुछ सलाह के लिए वास्तव में एक पोस्ट है, अधिक विशेष रूप से, यदि मैं अपने मौजूदा कोड को सरल बनाने के लिए इसका उपयोग कर सकता हूं। अनिवार्य रूप से, नीचे क्या होता है, यह गतिशील रूप से कुछ स्मृति आवंटित करता है, अगर मैं 256 से अधिक हो जाता हूं, तो सरणी को आकार में बढ़ाया जाना चाहिए, इसलिए मैं एक एक्सपी आकार, memcpy इत्यादि के साथ एक temp सरणी malloc (नीचे देखें)।सी
मैं बस सोच रहा था कि अगर नीचे दिए गए कोड में रीयलोक का उपयोग किया जा सकता है, इसे सरल बनाने के लिए, कोई सलाह, नमूना कोड, या यहां तक कि संकेतों को लागू करने के संकेतों की बहुत सराहना की जा रही है!
चीयर्स।
void reverse(char *s) {
char p;
switch(toupper(s[0]))
{
case 'A': case 'E': case 'I': case 'O': case 'U':
p = s[strlen(s)-1];
while(p >= s)
putchar(p--);
putchar('\n');
break;
default:
printf("%s", s);
break;
}
printf("\n");
}
int main(void) {
char c;
int buffer_size = 256;
char *buffer, *temp;
int i=0;
buffer = (char*)malloc(buffer_size);
while (c=getchar(), c!=' ' && c!='\n' && c !='\t')
{
buffer[i++] = c;
if (i >= buffer_size)
{
temp = (char*)malloc(buffer_size*2);
memcpy(temp, buffer, buffer_size);
free(buffer);
buffer_size *= 2;
buffer = temp;
}
}
buffer[i] = '\0';
reverse(buffer);
return 0;
}
शैली का एक नोट: आपको 'malloc' के वापसी मूल्य को कास्ट करने के लिए ** ** ** पसंद करना चाहिए। –
और 'रिवर्स' को तर्क 'कॉन्स्ट char *' के रूप में लेना चाहिए। –