[华赛面试题] C语言动态分配内存 用指针实现字符串的函数体外打印

#include "stdio.h" #include "stdlib.h" #define MAXSIZESTR 20 //拷贝字符串,动态分配内存 void main() { char *Copystr(); char *temp=Copystr(); char *p=temp; puts(p); free(p); } //想把子函数中的字符串在子函数外面打印 char *Copystr() { char *s=(char *)malloc( sizeof(char) * MAXSIZESTR ); printf("Please input your string:/n"); gets(s); return s; }

 

 

这是今天的华赛(Huawei Symantec )面试题之一,回来后修改了当时写的代码,很惭愧,将近二十分钟后终于调试清楚了,但是还有一点遗憾,不能实现输入字符串的字符数控制。 欢迎大家指出不足!

 

我想知道一般是怎么做的?

 

我的想法是:

1.通过设置一个计数器Count,记录用户输入的字符,如果超过指定的规模则报警;

2.报警后提示用户选择重新输入较少的字符串,或者申请更多的堆空间以便输入更长的字符串。

 

这个想法是可行的吗?通常是怎么做的呢?

你可能感兴趣的:([华赛面试题] C语言动态分配内存 用指针实现字符串的函数体外打印)