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

这个程序只存了第一个字符串,后面都没存上!!等高手啊!#include<stdio.h>#include<iostream>#include<string.h>using... 这个程序只存了第一个字符串,后面都没存上!!
等高手啊!

#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<=i;x++)
{
cout<<a[i];
printf("\n");
}

}
展开
 我来答
h_firefly
2009-09-30 · TA获得超过715个赞
知道小有建树答主
回答量:193
采纳率:0%
帮助的人:186万
展开全部
猜测:你的目的是读文件中的多行出来,然后分行存储二维数组,最后按每行再输出出来;

解决方法:
如果是读多行,正常情况下应该是每行每行往外读,而不是一下子全读出来。
用一个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可弹出)
百度网友d01bcdb
2009-09-30 · TA获得超过352个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:258万
展开全部
#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(fp,"%s",&a[i]);
i++;
count++;
}
i=0;
for(i=0;i<count;i++)
{
cout<<a[i]<<" ";

}
cout<<endl;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式