gpt4 book ai didi

c - scanf ("%ms", &p) 在 OSX 系统上不工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:33 25 4
gpt4 key购买 nike

我正在尝试在以下代码中使用 scanf("%ms, &p) 函数。

#include<stdio.h>
#include<stdlib.h>

int main()
{
char *p;
int n;

n = scanf("%ms", &p);
if (n == 1) {
printf("read: %s\n", p);
free(p);
}
else {
printf( "%d, No matching characters\n", n);
}
return 0;
}

这应该动态分配内存以避免缓冲区溢出。语法 %ms 应该适用于 POSIX 系统。然而在 OSX (High Sierra) 上,这不起作用:代码被执行,scanf 结果为 0 并且它不会停止程序等待用户输入。

如果我这样做:

if (n == 0) {
printf("read: %s\n", p);
free(p);
}

我看到在malloc中有以下错误:

malloc: *** error for object 0x7ffeeb91f9c8: pointer being freed was not allocated

这是为什么?

最佳答案

macOS 的scanf() 等手册页未提及对该功能的支持。它没有实现。这是一个麻烦。 macOS 上对 POSIX 的支持有时令人沮丧地落后于时代。

关于c - scanf ("%ms", &p) 在 OSX 系统上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54461111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com