#include "stdafx.h"
int* get_str(void)
{
int str=15555;//存放在栈区
int * a = &str;
return a;
}
char* get_str(int n,int m)
{
char *ap = {"this"};//常量存放在常量区,非栈区
return ap;
}
char* get_str(int n)
{
char chararray[] = {"this"};//数组临时变量存放在栈区
char * ap = chararray;
return ap;
}
void main_fileoper(){
/*堆与栈测试,另见struct.cpp*/
puts("start fileoper main......");
int *p = get_str();
printf("p=%d/n", *p);//这里能够输出正确结果是因为结果存放在eax中,没有被进一步使用
//printf("p=%s/n", *p);//如果再次输出就有问题了
char *ap_r = get_str(5,6);
printf("ap_r_1=%s/n", ap_r);
printf("ap_r_1=%s/n", ap_r);
ap_r = get_str(5);
printf("ap_r_2=%s/n", ap_r);
printf("ap_r_2=%s/n", ap_r);
}
#include "stdafx.h"
#include <stdlib.h>
typedef struct stu STU;
struct stu{
char name[15];
int age;
char addr[15];
};
/*读写块等*/
void main_fileoper2(){
FILE *fp;
char *name="d://block.txt";
if((fp=fopen(name,"wb+"))==NULL){
printf("%s open file error/n",name);
exit(1);
}
STU outarray[2],inarray[2];
STU *out,*in;
STU onestu,*onestup;
out = outarray;
in = inarray;
printf("please input data:/n");
for(int i=0;i<2;i++,out++)
scanf("%s%d%s",out->name,&out->age,out->addr);
out=outarray;
fwrite(out,sizeof(STU),2,fp);//块写
/*for(i=0;i<2;i++,out++)
fprintf(fp,"%s %d %s/n",out->name,out->age,out->addr);//格式写*/
rewind(fp);
printf("read file from %s/n",name);
fread(in,sizeof(STU),2,fp);//块读
/*for(i=0;i<2;i++,in++)
fscanf(fp,"%s %d %s/n",in->name,&in->age,in->addr);//格式读
in = inarray;*/
for(i=0;i<2;i++,in++)
printf("%s %d %s/n",in->name,in->age,in->addr);
fseek(fp,sizeof(STU),0);//随机读写
onestup = &onestu;
fread(onestup,sizeof(STU),1,fp);
printf("second is:%s %d %s/n",onestup->name,onestup->age,onestup->addr);
printf("is end?%d/n",feof(fp));
fclose(fp);
}
/*基本操作,打开关闭,读写字符,读写字符串*/
void main_fileoper22(){
puts("start fileoper2......");
FILE *fp;
char *name = "d://data2.txt";
fp = fopen(name,"wt+");
if(fp==NULL){
printf("%s open file error/n",name);
//getchar();
exit(1);
}else{
printf("%s open file ok/n",name);
}
printf("please input a string:");
char inone = getchar();
while(inone!='/n'){
fputc(inone,fp);
inone = getchar();
}
fputs("/nweisonghe test line 2",fp);
rewind(fp);
char one = fgetc(fp);
while(one!=EOF){
putchar(one);
one = fgetc(fp);
}
printf("/n");
rewind(fp);
char instring[12];
fgets(instring,12,fp);//读取n-1个字符串
printf("read string is %s/n",instring);
fclose(fp);
}