我怎么写gets(???); 谢谢。
void getStr(**temp){
gets(???);
}
void main(){
char *ch;
printf("Enter a string: \n");
getStr(&ch);
printf("main: %s\n", ch);
}
------输出------ 输入一个字符串: ABC main:abc
答案 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语言的人写的,而且可能会有更严重的错误。