我想将stdin中的行复制到一个字符指针数组中。例如,如果用户输入以下“the \ nquick \ nbrown \ nfox”,那么我希望有一个看起来像
的数组arr [0] =“the”arr [1] =“quick”arr [2] =“brown”arr [3] =“fox”
任何指针?
答案 0 :(得分:1)
在循环中使用getchar()来逐个字符地获取输入。将字符附加到循环中的当前字符串,当当前字符是换行符'\ n'时,启动一个新字符串而不是附加该字符。
我会让你自己解决剩下的问题,如果你对这个问题有更具体的问题,那就问问吧。
任何指针?
答案 1 :(得分:1)
答案 2 :(得分:1)
您需要确保不仅分配了一个指针数组,还为每个元素分配了空间。我不会像你应该那样检查NULL指针,但是这应该让你开始。
char **arr;
int maxWords = 3;
int i;
arr = malloc (sizeof (char *) * maxWords);
for (i = 0; i < maxWords; i++)
{
arr[i] = malloc (100);
fgets (arr[i], 99, stdin);
}
之后,你也需要释放那个记忆:
for (i = 0; i < maxWords; i++)
{
free (arr[i])
}
free (arr);
答案 3 :(得分:1)
你需要一个字符指针数组和一些空间让它们指向 - 也就是说,一个或多个字符数组......从动态分配到静态分配,有多种可能性。阵列。线路必须多长时间?这取决于您的环境。 (我必须在我的一个程序中修复一个错误,因为当我使用4096字节缓冲区作为行长时它失败了,但至少有一个输入行有超过5000个字节。失败是因为我计算了数字数据中的换行符,当答案为零时退出循环 - 不是因为缓冲区溢出!)
一种选择,在其他解决方案中没有提及(到目前为止):