【发布时间】:2020-09-11 05:35:40
【问题描述】:
给定程序正在处理代码中固定的字符串,例如
char str[100] = "With fixed string this code works"
// Output of the program is "fixed string this code works"
但是一旦我使用str 输入
scanf("%s", &str);
似乎发现内存分配错误,因为在给出输入后代码返回错误值。
完整代码如下
int main (void) {
char str[100];
char *p = (char *)malloc(sizeof(char) * str[100]);
printf("Enter something: ");
scanf("%s", &str);
*p = str;
p = strchr(str, ' ');
puts(p + 1);
// Check for the first space in given input string if found then
while (*p++)
if (*p == ' ' && *++p)
printf("%s", *p);
printf ("\n\n");
return 0;
}
不确定在使用scanf 函数输入字符串时动态内存分配是否需要任何其他分配过程
【问题讨论】:
-
打开所有编译器警告并阅读它们。你应该得到不少。
-
只是检查一下,您是否尝试从用户那里获取一个字符串,然后打印出第一个空格之后的所有字符?
-
@CodeWash 是的,正是我想做的事情
-
@user7254101 赋值后 p = strchr(str, ' '); p 等于 NULL。
-
你认为你传递给
malloc()的值是什么?请仔细记下 Craig Estey 的回答:您正在传递 在str[100]找到的值,我猜这不是您打算做的
标签: c scanf dynamic-memory-allocation fgets c-strings