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");
}
} 展开
等高手啊!
#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");
}
} 展开
2个回答
展开全部
猜测:你的目的是读文件中的多行出来,然后分行存储二维数组,最后按每行再输出出来;
解决方法:
如果是读多行,正常情况下应该是每行每行往外读,而不是一下子全读出来。
用一个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可弹出)
解决方法:
如果是读多行,正常情况下应该是每行每行往外读,而不是一下子全读出来。
用一个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(fp,"%s",&a[i]);
i++;
count++;
}
i=0;
for(i=0;i<count;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询