study c(vc中测试过)——指针复习,文件操作

来源:互联网 发布:string转json数组格式 编辑:程序博客网 时间:2024/06/11 00:57

#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);
}