这是一种将数字串输入2D数组的好方法吗?我对代码有几个问题:
分配是输入尽可能多的字符串,直到用户输入空字符串。然后我需要tokenize
和atoi
字符串。
使用1D数组和char **
会更好/更容易吗?
最后,使用char **
,如果我为字符串分配内存,我是否必须为令牌分配更多/不同的内存?
int strInput ( char string[][], int maxChars )
{
int i = 0;
printf("Enter strings of digits. Enter empty string to stop.\n");
while (( string[i][maxChars] = getchar() )
{
printf("Please enter a string of digits:");
i++;
}
string[i] = '\0';
return i;
}
答案 0 :(得分:1)
char string[][]
K& R符号很古老,你应该使用“新”char**
风格。
这是一种将数字串输入二维数组的好方法吗?
绝对没有。你正在用char读取char而不是digit-string by digit-string,我认为你的意图是。
使用1D数组和char **会更好/更容易吗?
也可以这样做,在同一个字符串中的项之间写一些标记。这基本上取决于你。
最后,使用char **,如果我为字符串分配内存,是否必须为令牌分配更多/不同的内存?
是的,确定,您要么预先分配一个非常大的内存,要么继续重新分配。