1、怎么将一个不确定长度的字符串存入数组

求助:1、如何将一个不确定长度的字符串存入数组?
7-1:输入一个字符串,统计其中有多少个单词?单词之间用空格分隔开。
答:代码如下:
namespace 书本练习题

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个字符串:");
            string strWord = Console.ReadLine();
            int countWord = 0;
            char[] splitstr = { ' ','!','#' };
            string[] strArray = new string[100];
            strArray = strWord.Split(splitstr);
            for (int i = 0; i < strArray.Length; i++)
            {
                countWord++;
            }
            Console.WriteLine("你输入的字符串包含{0}个单词!", countWord);
            for (int i = 0; i < strArray.Length; i++)
            {
                Console.WriteLine("{0}", strArray[i]);
            }
            Console.WriteLine("你输入的字符串包含{0}个单词!!", strArray.Length);
            Console.ReadKey();
        }
    }
}

没有完成的内容:1、含标点符号的语句,结尾会增加一个空字符,如何去掉?
                2、如何将一个字符串存入数组,字符串长度不确定。

求助的主要困惑:如何将一个不确定的字符串存入数组?
如:本题中输入一个字符串,如何把这个字符串存入数组?而不是用事先定义了一个长度为100的数组(string [] strArray=new string[100];)
请各位高手大侠不吝赐教。谢谢!
------解决思路----------------------
直接对字符串空格分割,就可以把每个单词单独存放起来,然后进行相应的处理,List集合接收。至于你说的结尾会增加一个空字符,直接单独移除就好
------解决思路----------------------
for (int i = 0; i < strArray.Length; i++)
{
    countWord++;
}

这种代码写出来真的不觉得有问题吗

另外
string[] strArray = new string[100];
strArray = strWord.Split(splitstr);

可以合写成一行:
string[] strArray = strWord.Split(splitstr);

你实现定义的固定长度数组在下一行代码执行后立刻变成了垃圾

关于你的第一个问题,你可以使用String.Split的带StringSplitOptions参数的重载,写成这样:
string[] strArray = strWord.Split(splitstr, StringSplitOptions.RemoveEmptyEntries);

这样数组里就不会包含空字符串了
------解决思路----------------------
用List<string>,它可以不断追加元素进去。
最后如果你需要数组,调用下ToArray()即可。
------解决思路----------------------
关于可变长度数组,前面已经说了很多

后面多了空字符的问题,说明字符串最后多了个空格呗,用TrimEnd先把最后的空格去掉,再Split
------解决思路----------------------
如果还没学到LIST的话可以这样改
string[] strArray = new string[];
             strArray = strWord.Split(splitstr);
就是不固定的数组

2使用替换字符函数试看
------解决思路----------------------
string[] strArray = new string[];
             strArray = strWord.Split(splitstr);
这样
string[] strArray;
             strArray = strWord.Split(splitstr);
或这样
string[] strArray = strWord.Split(splitstr);
就可以了
Split本来就是返回一个新的数组
------解决思路----------------------
按LZ的写法

这行 string[] strArray = new string[100];  不用事先写死长度

直接这样就行
 string[] strArray = strWord.Split(splitstr);