这个用一维指针数组表示,要比二维数组好。好就好在,这样每行可以存任意数目的字符。而二维数组就不行,比如char strary[5][10];用它只能每行存9个字符('\0'结尾)。一下是c语言的代码,关键句是 fscanf(fptr,"%s",tmpStr); // 它实现了读取一行
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//************************************
// 返回值: int // 行数
// 功能: 按行读取filename文件,分别存入strAry
//************************************
int inputfunc(char* filename,char* strAry[])
{
int lineNum=0; // 行数
const int LineBuf=128; // 缓存大小,128,可改
char tmpStr[LineBuf]; // 临时字符串
FILE* fptr=fopen(filename,"r");
if (!fptr) // 打开失败
{
printf("文件打开失败!\n");
return 0;
}
for (int i=0; ; i++)
{
if (feof(fptr)) break;
fscanf(fptr,"%s",tmpStr);
strAry[i]=(char*)malloc((strlen(tmpStr)+1)*sizeof(char));
strcpy(strAry[i],tmpStr);
lineNum++;
}
fclose(fptr);
return lineNum;
}
int main()
{
char file[64]; // 存文件名
char* strArray[10]; // 存字符串
printf("请输入完整文件名(包括文件路径):");
scanf("%s",file);
printf(file);
for (int i=0; i<inputfunc(file,strArray); ++i)
{
puts(strArray[i]);
}
return 0;
}
C++ 不知道你有没有学过,要用C++实现的话有更好的方法,代码更加简洁。
用 ios 对象的 getline() 操作可以读取一行。
共同学习,共同提高。
我的邮箱:
xusiwei1236@163.com
温馨提示:内容为网友见解,仅供参考