C语言把一些字符串存入一个二维数组(在线等)

来源:百度知道 编辑:UC知道 时间:2024/06/06 02:05:32
这个程序只存了第一个字符串,后面都没存上!!
等高手啊!

#include<stdio.h>
#include<iostream>
#include <string.h>
using namespace std;
#define M 100
#define N 100
void main()
{
//首先是把较长的字符串存贮到一个二维数组a[M][N]中,以空格为界限
int i=0,j=0;
int x;
char a[M][N];

FILE *fp;
fp=fopen("D:\\file2.txt","rt"); //D盘中的一个文件
char c;
while (!feof(fp))
{
fscanf(fp, "%c", &c);
if (c != ' ')
{
for (j = 0; j < 100; j++)
{
a[i][j] = c;
fscanf(fp, "%c", &c);
if (c == ' ') break;
} //这边好像有错??
a[i][j]='\0';
break;
}
else
{
i++;
fscanf(fp, "%c", &c);
}
}
for(x=0;x

猜测:你的目的是读文件中的多行出来,然后分行存储二维数组,最后按每行再输出出来;

解决方法:
如果是读多行,正常情况下应该是每行每行往外读,而不是一下子全读出来。
用一个for循环,每次调fgets函数,只读一行。
读一行存一行。
然后再for循环往外cout。

fgets每次读一行,
fscanf则要自己定规则,你很难判断行的结束符/n/a

建议:
//1. 如是c的话不要引用#include<iostream>,如果c++的话不要引用#include<stdio.h>
//2. 因为是强制读100个,并且只能读100个。如果文件中总数小于100,则可以正常打印出来;如果大于100,则只能输出100个;猜测你的文件中第一行应该是多于100个字符的;
//3. 学会单步跟踪加细心
//4. 多用VC6自带的帮助文档(安装完CSDN后按F1可弹出)

#include<stdio.h>
#include<iostream>
#include <string.h>
using namespace std;
#define M 100
#define N 100
void main()
{
//首先是把较长的字符串存贮到一个二维数组a[M][N]中,以空格为界限
int i=0,j=0;
char a[M][N];

FILE *fp;
fp=fopen("D:\\file2.txt","rt"); //D盘中的一个文件
if(!fp)
{
cout<<"fail!"<<endl;
}
int count=0;//计数器,计算字符串个数
while (!feof(fp))
{
fscanf(