#include<stdio.h>
int main()
{
FILE *fp=fopen("D:\\c\\data.txt.txt","r"); //打开一个已有文件,允许读取
int arr[10];
//int a=0;
if(fp==NULL){
return 0;
}
while(!feof(fp))
{
fgets(arr,10,fp);
}//feof检查文件流是否读到了文件尾 (返回非零值代表达到文件尾)
int i;
for(i=0;i<10;i++){
printf("%d ",arr[i]);
}
fclose(fp);//关闭文件
return 0;
}
看看我给你改的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp = fopen("D:\\c\\data.txt", "r");
int arr[10];
char line[256];
if (fp == NULL)
{
printf("打开文件失败\n");
return 0;
}
if (fgets(line, sizeof(line), fp) != NULL)
{
int i = 0;
char *token = strtok(line, ",");
while (token != NULL && i < 10)
{
arr[i++] = atoi(token);
token = strtok(NULL, ",");
}
int j;
for (j = 0; j < i; j++)
{
printf("%d ", arr[j]);
}
}
fclose(fp);
return 0;
}
你遇到的问题是因为fgets函数用于读取文本行时,它是按字符读取的,而不是将整行数据直接存入数组的。fgets函数的第一个参数应该是指向字符数组的指针,而你将整型数组arr的指针传入了fgets函数。
如果你想一次读取整行数据并将其存储到整型数组中,可以使用fscanf函数,它可以按特定的格式读取数据。下面是使用fscanf读取整行数据的代码:
#include <stdio.h>
int main()
{
FILE *fp = fopen("D:\\c\\data.txt", "r");
if (fp == NULL)
{
printf("打开文件失败\n");
return 0;
}
int arr[10];
int i = 0;
while (fscanf(fp, "%d,", &arr[i]) == 1)
{
i++;
if (i >= 10)
break;
}
fclose(fp);
int j;
for (j = 0; j < i; j++)
{
printf("%d ", arr[j]);
}
return 0;
}
这是运行结果图:
有可能读入代码有问题
fgets(arr,10,fp);
这是按照字符串读取
你应该用
for(i=0;i<10;i++) {
fscanf(fp, "%d", &arr[i]);
}
(1)预编译 主要处理源代码文件中的以“#”开头的预编译指令。
(2)编译 把预编译之后生成的xxx.i或xxx.ii文件,进行一系列词法分析、语法分析、语义分析及优化后,生成相应的汇编代码文件。
(3)汇编
将汇编代码转变成机器可以执行的指令(机器码文件)。经汇编之后,产生目标文件(与可执行文件格式几乎一样)xxx.o(Linux下)、xxx.obj(Windows下)。
(4)链接
将不同的源文件产生的目标文件进行链接,从而形成一个可以执行的程序。