假设我有一个char变量,我想在一行代码中将其与char数组连接起来。以一个[不切实际的]例子为例:
strcat("ljsdflusdfg",getchar());
如果我想要进行相反的操作,无论数据类型如何,哪个函数是合适的用于连接或强制转换字符串?或者可能有一些语法我不知道...
这里有一个例子。它可以正常编译,但会崩溃。
char* input(){
char* inp="";
while(1){
char c=getchar();
if(c){
if(c=='\n'||c==EOF){
break;
}else{
strcat(inp,(char*)c);
}
}
}
return inp;
}
&c
版本与(char *)c
之所以不正确,是因为相同的原因。如果您认为另一个版本代码太多,那么欢迎来到C编程的世界。:P(实际上,有第四种方法,但我不确定这是否是作业,而且我不想冒险替你完成作业,所以我会保持谨慎。) - Chris Lutzmalloc
和realloc
用于可变长度字符串。固定长度字符串只是一个char []
(不是char *
),但如果你在函数中声明一个数组(在堆栈上),你不能将其传回给调用者,所以你需要将它(以及它的长度,以免溢出)作为参数传递。这就是fgets
的工作原理。 :P - Chris Lutz