如何在函数中使用gets()来在char * ch中分配字符串?

时间:2013-12-13 19:46:39

标签: c function pointers char gets

我怎么写gets(???); 谢谢。

void getStr(**temp){
   gets(???);
}

void main(){
   char *ch;
   printf("Enter a string: \n");
   getStr(&ch);
   printf("main: %s\n", ch);
}

------输出------ 输入一个字符串: ABC main:abc

1 个答案:

答案 0 :(得分:2)

切勿使用gets功能。它本质上是不安全的,因为没有办法防止超支(用户输入的数据超出了你准备接受的数量)。实际上,它已被2011 ISO C标准从语言中删除。

您应该使用fgets()代替。使用起来有点复杂(首先,它会在字符串中留下'\n'行终止符),但它允许您指定要读取的最大字符数。

您的getStr函数可能不需要采用char**参数;一个char*会做,因为它不会修改指针,只是将数据读入指针指向的数组。

您需要分配一个char数组来读取数据。您可以声明一个数组对象:

char line[200]; // for example

或使用malloc分配空间。

还有一件事:void main()不正确。 (允许编译器接受它,但没有充分的理由使用它。)正确的定义是int main(void)。如果你有一本告诉你使用void main()的书,它是由一个不太了解C语言的人写的,而且可能会有更严重的错误。

查看comp.lang.c FAQ