我是新来的。 我有一个文本文件:
6
<cr>
R 0
R 1
R 4
R 36
R 0
R 4
/ edited / 这就是我所拥有的。我想将每一行读入一个数组,以便我可以将该数组转换为一个整数,这样我就可以打印出我想要的任何一行的数字。
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
FILE *fr; /*declares file pointer*/
int i, j, num[32];
char input_file[32], line[32];
fr = fopen(input_file, "r");
if(fr != NULL){
while(fgets(line, sizeof(line), fr) != NULL){
for(i=0;i<strlen(line);i++){
if(line[i] >= '0' && line[i] <= '9'){
num[i] = line[i] - '0';
}
i++;
printf("%d\n", num[i]);
}
fclose(fr);
}
else{
perror(input_file);
}
}
我没有收到任何错误,但它没有打印正确的东西;这就是它打印的内容:
-370086
-370086
-370086
-370086
-370086
-370086
-370086
-370086
答案 0 :(得分:3)
您可以在字符周围使用单引号来获取它的实际字节值,因此您可以使用它来检查字符是否在您想要的范围内。
您不想使用strcpy,而是希望一次一行地浏览行中的字符,接受您想要的字符,如下所示:
for(i = 0; i < strlen(line); i++)
{
if(line[i] >= '0' && line[i] <= '9')
{
// this is a good character, add it to the array in the appropriate place
}
}
一旦你认为'0'是十进制值48和look at the table here,你应该能够解决整数。
注意,这看起来有点像家庭作业,因此我的答案并没有给你所需要的一切 - 希望它能为你提供你需要的东西!祝你好运。