我知道我不应该在C90中这样做,这是一个相当基本的东西.
char name[strlen(s)];
ArrayLength.c:11: warning: ISO C90 forbids variable length array ‘name’
Run Code Online (Sandbox Code Playgroud)
他们想要我专门使用malloc吗?我只是好奇这里背后的逻辑.
这是禁止的,因为C90不支持可变长度数组(VLA).它真的很简单.
你的选择是:
malloc).malloc,没有能够检查分配是否成功的概念).[ 注意:如果你要分配一个数组来制作副本s,你需要使用strlen(s)+1大小(记住空终止符).]