* C *可接受的2D字符串输入?

时间:2014-12-06 07:45:37

标签: c string getchar

这是一种将数字串输入2D数组的好方法吗?我对代码有几个问题:

  • 分配是输入尽可能多的字符串,直到用户输入空字符串。然后我需要tokenizeatoi字符串。

  • 使用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;
    }
    

1 个答案:

答案 0 :(得分:1)

char string[][] K& R符号很古老,你应该使用“新”char**风格。

  

这是一种将数字串输入二维数组的好方法吗?

绝对没有。你正在用char读取char而不是digit-string by digit-string,我认为你的意图是。

  

使用1D数组和char **会更好/更容易吗?

也可以这样做,在同一个字符串中的项之间写一些标记。这基本上取决于你。

  

最后,使用char **,如果我为字符串分配内存,是否必须为令牌分配更多/不同的内存?

是的,确定,您要么预先分配一个非常大的内存,要么继续重新分配。