|
发表于 2019-8-5 21:28:49
|
显示全部楼层
本帖最后由 aladdin_h 于 2019-8-8 18:36 编辑
首先,文档中的每个数字之间肯定需要空格分隔开;再者,按照一般的输入方式,到一行末尾肯定回车换行,一行不管有多少空格(两个数字之间),可以在转换时判断是否为空格,然后在进行int转换,简单修改一下程序就可以了
截图说明:
第二行的45和4之间有两个空格,第二行第二个数为二位数,第三行第三个数为三位数,以此可以验证多位数都可行,代码未优化。
截图:在下
代码如下:
多谢提出疑问,刚开始想的太简单了,这次使用了 atoi 函数,头文件为 #include <stdlib.h>,修改完如下。
- #include "stdlib.h"
- #include "stdio.h"
-
- int main(int argc, char *argv[])
- {
- FILE *in= fopen("G:/text/demo.txt", "r");
- char buf[100][1024];
- int figure[100][1024]={ 0 };
- int i=0,j=0,m=0,n=0;
-
- while ( fgets(buf[i], sizeof(buf[i]), in) != NULL)
- {
- printf("%s", buf[i]);
- i++;
- }
- printf("\n\n");
- fclose(in);
-
- //想读取哪一个数字,这里读取第三行第三个数
- //注意字节是一个一个的,所以这里数组[][]要注意。
-
- for (;m<i;m++)
- {
- n=0;
- j=0;
- for (;buf[m][n]!='\0';)
- {
- if (buf[m][n] ==' ')
- {
- n++;
- continue;
- }
- if ( n!=0 && buf[m][n-1] != ' ')
- {
- n++;
- continue;
- }
- figure[m][j]=atoi( &buf[m][n] );
- j++;
- n++;
- }
-
- }
-
- printf("这个数组有%d行,%d列",i,j);
- printf("\n");
- for(m=0;m<i;m++)
- {
- for(n=0;n<j;n++)
- printf("%d ",figure[m][n]);
- printf("\n");
- }
- printf("\n");
-
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|