如果在C语言中将一个文本文件存入二维数组

现假设有一文本文件,存有不同人的姓名:
张三
李四
王小云
吴飞群

我想用C语言读取该文本文件,将上述姓名存入一个二维数组中.
array[0]=张三
array[1]=李四
array[2]=王小云

其中
array[0][0]=张
array[0][1]=三

请问要如何写呢?

PS.我的本意是这样的.
因为有一个EXCEL表格太多重复的名单了..想先将名字保存为文本文件,然后用C语言写一个程序,筛选出其中重复的名字,并提示用户.
如果能给小弟指教,另外感谢您.

先谢谢所有的回答者!
我还有一个疑问,因为一个汉字是两个char来保存..那请问如果我想要输出这个汉字,应该如果来输出呢?谢谢...

首先说明2点:
1、EXCEL表格本身的功能非常强大(尽管我也不是很熟悉),但它确实可以完成很多事情,就像问题中所描述的这种情况EXCEL是一定可以做的。
2、尽管用C语言不是非常好的一个选择,不过如果熟悉C编程的话也是一种解决问题的途径,下面我假定:存有不同人的姓名的文件名为name.txt(路径在C程序原文件所在的文件夹中,如果不在的话请更改路径)。另外array[0][0]=张
要求是显然不合理的,字符处理的时候array数组一般都会选择char类型,“张”是2个字符。

下面是程序的例子:
首先说明2点:
1、EXCEL表格本身的功能非常强大(尽管我也不是很熟悉),但它确实可以完成很多事情,就像问题中所描述的这种情况EXCEL是一定可以做的。
2、尽管用C语言不是非常好的一个选择,不过如果熟悉C编程的话也是一种解决问题的途径,下面我假定:存有不同人的姓名的文件名为name.txt(路径在C程序原文件所在的文件夹中,如果不在的话请更改路径)。另外array[0][0]=张
要求是显然不合理的,字符处理的时候array数组一般都会选择char类型,“张”是2个字符。

下面是程序的例子:
#include <stdio.h>
#include <string.h>
#define MAX_NAME 100 //名字的最大个数
#define N 10 //中文名字一般不超过4个汉字(如果有特例则增大该值)

void process(char *str)
{
printf("%s\n",str);
}

int main()
{
FILE *fp;
char array[MAX_NAME][N];
char ch; //临时读取字符使用
int index = 0; //array 的行标号,人名的索引
int name_c = 0; //array 的列标号,构成每个人名中的字符

fp = fopen("name.txt","rt");
if(NULL == fp)
{
printf("Failed to open the file: name.txt.\n");
getchar();
return 1;
}

ch = fgetc(fp);
while( ch != EOF )
{
if(ch != '\n')
{
array[index][name_c] = ch;
name_c++;
}
else
{
array[index][name_c] = '\0';
index++;
name_c = 0;
}

if(name_c > 9)
{
printf("Name is too long and it will be deserted!\n");
name_c = 0;
ch = fgetc(fp);
while( ch != '\n' )
{
ch = fgetc(fp);
}
}
ch = fgetc(fp);
}
//上面得到了array数组,array[index]就是各个人名的字符串。
//接下来则可以对array数组进行处理,如统计重复人名等工作。
//下面仅是处理的一个示例:
for(ch=0; ch<=index; ch++)
{
process(array[ch]);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-02
不必这样麻烦吧。EXCEL有筛选功能,用分类汇总,按名字列分类,汇总项随便选一列,就会把同名的放到一起了!
第2个回答  2009-08-02
使用的是那种编码?
相似回答
大家正在搜