Scanf字符串和set指针
我要扫描字符串并设置指向他的指针。字符串输入每次都不同,所以我不能像Scanf字符串和set指针,c,pointers,scanf,C,Pointers,Scanf,我要扫描字符串并设置指向他的指针。字符串输入每次都不同,所以我不能像字符输入[20]那样设置。到目前为止没有成功 int main(void) { char input; char *input_string = input; scanf("%s", &input_string); int i = 0; while (input_string[i] != '\0') { printf('%d', input_string[i])
字符输入[20]
那样设置。到目前为止没有成功
int main(void) {
char input;
char *input_string = input;
scanf("%s", &input_string);
int i = 0;
while (input_string[i] != '\0') {
printf('%d', input_string[i]);
i++;
}
}
在POSIX系统上,可以使用
m
修饰符为字符串自动分配内存
char *input_string;
scanf("%ms", &input_string);
请注意,为了避免内存泄漏,最终需要调用
free(input_string)代码>以释放分配的内存。恐怕您需要一本好的C语言书并通读一遍。这段代码错误的地方比正确的地方多。这段代码不应该编译。您需要为数据分配内存。它不需要是确切的数量,它应该是最大可能。您还应该在scanf
调用中定义该最大值。使用指针,相关的副本是节省时间,启用所有编译器警告。可能会收到诸如“警告:初始化从整数生成指针而不进行强制转换[-Wint转换]”、“警告:格式“%s”要求参数类型为“char*”,但参数2的类型为“char**”[-Wformat=]”、“警告:多字符字符常量[-Wmultichar]”等输出,“警告:传递'printf'的参数1将指针从整数转换为不带强制转换[-Wint转换]”。此反馈比在堆栈溢出上发布快得多。char*input\u string=input;
是错误的。input\u string
是指针,但input
是字符,您无法分配它们。