
你的问题很模糊,因为不知道你是在什么基础上用C语言编程 *** 作RAM区的。
如果是在某种移植好的非主流 *** 作系统上(不是桌面的windows或者linux),
也分是否支持MMU和虚拟内存,如果不支持,那么可以直接用绝对地址来 *** 作RAM1,
如果有MMU和虚拟内存,那么在这个应用层面上是没有办法自己控制访问的地址的。
如果是裸代码直接跑在板子上或者是内核驱动形态的程序,那么你可以直接通过绝对地址来 *** 作RAM1。
#include<stdioh>
#include<stdlibh>
#include <asserth>
# define SIZE sizeof(struct Student)
struct Student
{
int num;
char name[20];
float score[3];
struct Student next;
};
struct student_l{
int num;
struct Student head;
struct Student tail;
};
struct student_l creat(int n)
{
int i;
struct student_l stu = NULL;
struct Student p1 = NULL;
stu = (struct student_l )malloc(sizeof(struct student_l));
assert(stu != NULL);
printf("请按顺序输入:学号,姓名,第一门成绩,第二门成绩,第三门成绩:\n");
for(i=1;i<=n;i++)
{
p1 = (struct Student )malloc(SIZE);
p1->next = NULL;
scanf("%d%s%f%f%f",&(p1->num),p1->name,p1->score,&(p1->score[1]),&(p1->score[2]));
if (stu->head == NULL){
stu->head = p1;
stu->tail = p1;
}
else{
stu->tail->next = p1;
}
}
return(stu);
}
void save(struct student_l stu)
{
assert(stu);
FILE fp;
struct Student p = stu->head;
if((fp=fopen("studat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
while(p){
fwrite(p,SIZE,1,fp);
p=p->next;
}
fclose(fp);
}
void free_stu(struct Student stu){
if (stu->next){
free_stu(stu->next);
}
else {
free(stu);
}
}
void free_stu_l(struct student_l stu){
assert(stu);
free_stu(stu->head);
free(stu);
stu = NULL;
}
int main()
{
struct student_l pstu;
struct Student pt;
int i;
FILE fp;
printf("请输入该班级学生个数:\n");
scanf("%d",&i);
pstu=creat(i);
save(pstu);
if((fp=fopen("studat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
while(fread(&pt,SIZE,1,fp))
{
printf("%d %s %2f %2f %2f\n",ptnum,ptname,ptscore[0],ptscore[1],ptscore[2]);
}
free_stu_l(pstu);
fclose(fp);
return 0;
} 1,1 Top
ubuntu 1310 64位,gcc 481编译通过
你的代码问题挺多的,这个是改好的,你参照看看应该能高明白
随机文件
open filename for random as #1
get #1,记录号,变量
put #1,记录号,变量
close #1
顺序文件,读和写不一样
open filename for output as #1‘向外写。
write#1,变量
close #1
open filename for output as #1‘向外写。
lineinput,#1,变量
close #1
顺序文件读取的是当前记录号的,每次读写记录号+1
二进制文件存储稍微麻烦,自己慢慢想吧。
以下是二进制的存储过程
open filename for binary as #1
get #1,记录号,字节
put #1,记录号,字节
close #1
这就是二进制相对麻烦的地方,当然如果已经知道数据长度,可以这样
dim a as integer'integer为两个字节的数据
open filename for binary as #1
get #1,记录号,a
put #1,记录号,a
close #1
a的结果还是a,说明这样存储是可行的。
三菱计时器和触摸屏读写程序是两个不同的概念,它们的区别如下:
1 三菱计时器:是一种计时器设备,用于计算时间间隔和时间延迟等。它通常用于自动化控制系统中,例如工业自动化、控制等领域。三菱计时器的主要作用是控制设备的时间参数,例如延迟时间、工作时间等。
2 触摸屏读写程序:是一种人机界面设备,用于与机器进行交互。它通常用于工业自动化、控制等领域。触摸屏读写程序的主要作用是通过触摸屏幕来控制机器的运行状态,例如启动、停止、调整参数等。
因此,三菱计时器和触摸屏读写程序是两个不同的设备,它们的作用和功能也不同。在工业自动化领域中,它们通常是相互配合使用的,以实现对机器的全面控制和监控。
MOV A,#DATA(要写入的数据);
MOV DPTR,#Address(要存放数据的外部存储器单元地址);
MOVX @DPTR,A;
MOVX A,@DPTR;
CJNZ A,#DATA(判断时认为要传送的正确数据),LABEL
CLR P10
JMP END
LABEL:CLR P11
END:AJMP $
以上就是关于C语言如何对多个RAM区读写的; 写个小程序 初始数据肯定写在RAMO区的 如何对RAM1读写 指针如何变化全部的内容,包括:C语言如何对多个RAM区读写的; 写个小程序 初始数据肯定写在RAMO区的 如何对RAM1读写 指针如何变化、C语言(关于对文件的读写)程序运行时出现runtime错误、vb中怎么把用三种读写顺序写程序呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)