Arrays 如何将字符串转换为字符数组?

Arrays 如何将字符串转换为字符数组?,arrays,string,char,c99,Arrays,String,Char,C99,所以我想把一个字符串放到一个字符数组中,但问题是我需要先定义数组长度,然后才能把字符放到数组中,但我不知道长度是多少,因为它取决于用户输入的字符串,有办法吗? 我是用C99标准编程的。大多数人解决这个问题的方法是只制作一个足够大的数组来处理他们有史以来最大的预期输入(或远远超过) 但是,在无法知道将要获得并希望处理的字符数的情况下,需要通过内存分配(使用某种基于日志的增长)动态增长内存。即,分配100个字符,如果您尝试添加更多字符,则动态分配200个字符,复制您已有的字符,然后添加新的stuf。

所以我想把一个字符串放到一个字符数组中,但问题是我需要先定义数组长度,然后才能把字符放到数组中,但我不知道长度是多少,因为它取决于用户输入的字符串,有办法吗?
我是用C99标准编程的。

大多数人解决这个问题的方法是只制作一个足够大的数组来处理他们有史以来最大的预期输入(或远远超过)


但是,在无法知道将要获得并希望处理的字符数的情况下,需要通过内存分配(使用某种基于日志的增长)动态增长内存。即,分配100个字符,如果您尝试添加更多字符,则动态分配200个字符,复制您已有的字符,然后添加新的stuf。然后,如果你再次点击200,再次分配到400,然后复制,添加。(刚刚编好的实际数字)

首先获取字符串。然后你就知道它的长度了。然后你可以把它放到一个字符数组中,但是我不再有这个字符串了。。。。因为我用getchar获取字符串长度,当它到达最后时,我无法获取stringIMO Schwartz的注释,这是最好的选择。只需使用另一个变量将字符串长度保存到其他地方即可。记住,你可以控制程序的流程,因此,只有当你得到字符串的rip时,字符串才会消失。此外,(我知道你明确地说了C99),你可以始终使用POSIX的
getline()
,非常便携。指针只指向东西。您需要一个指向可以保存所有数据的内存块的指针。要获取一个指向可以保存数据的内存块的指针,您需要动态分配它(malloc)。如果该内存块已满,则需要获取更大的内存块,将您已经拥有的所有内容复制到更大的内存块中,然后添加moreUse
realloc()
以增加字符串。它返回一个新指针。