C++ C++;读取长的非分隔整数,将它们分隔并放入2d数组
我有一个numbers.txt,其中的m行包含n位整数:C++ C++;读取长的非分隔整数,将它们分隔并放入2d数组,c++,c,text,scanf,C++,C,Text,Scanf,我有一个numbers.txt,其中的m行包含n位整数: 185793290584395734589340920932 432904895929583224024902234023 我曾尝试使用fscanf(),但在定义格式时遇到问题(更多信息) 您是否在数组的每个索引中存储每个数字?如果是,您可以使用“%c”,然后用“0”减去它。用fgetc FILE *fid = fopen("numbers.txt", "r"); int numbers[m][n]; for (int i = 0; i
185793290584395734589340920932
432904895929583224024902234023
我曾尝试使用fscanf(),但在定义格式时遇到问题(更多信息)
您是否在数组的每个索引中存储每个数字?如果是,您可以使用“%c”,然后用“0”减去它。用
fgetc
FILE *fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
numbers[i][j] = fgetc(fid) - '0';
}
fgetc(fid); // throw away new line
}
试试这个
fscanf(fid, "%1d", &num);
@Duck我想他不想打印出来。我认为A.L.想存储2D数组并计算它。这是C还是C++?两种语言都有解决此问题的特定方法。-“0”的作用是什么?@A.L,您正在阅读一个
char
。字符'0'
是48
,字符'A'
是65
,等等。减去'0'
将字符'0'
(48
)转换为整数值0
,字符'1'
(49
)转换为整数值1
,等等。
FILE *fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
numbers[i][j] = fgetc(fid) - '0';
}
fgetc(fid); // throw away new line
}
FILE *fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++) {
char c[n + 1]; //an extra char for '\0'
fscanf(fid, "%s", c);
for (int j = 0; j < n; j++) {
numbers[i][j] = c[j] - '0';
}
}
fscanf(fid, "%1d", &num);