1. 程式人生 > >C語言指標和檔案

C語言指標和檔案

include<stdio.h>

void main()

{
int *p; //*p是一個指標,定義的有地址但是是未知的
int a=3;
p=a; //把a的地址p,這是不對的,因為p是未知的,雖然有地址,但不確定,因此不能直接和a劃等號
printf("%d\n",*p);
}

include<stdio.h>

void main()

{
int *p,q; // 定義兩個指標p,q
int a=3; // 定義一個變數a
p=&a; // 將a的地址給p
q=p; // 將p的地址給q # 假設用
q=*p,就不對了,因為q地址是不確定的,不能直接使用
printf("%d\n",*q); // 最後輸出q所指向的值
}

3.實現兩個數值的交換,如果a>b,就交換著兩個數值,並輸出依次輸出

include<stdio.h>

void main()

{
int a,b;
printf(“請輸入兩個數值!: “);
scanf(”%d%d”,&a,&b);
int t=0;
if (a>b)
{
t=a;
a=b;
b=t;
}
printf("%d,%d\n",a,b);

}

4.呼叫子函式來交換髮現,並沒有交換輸出

include<stdio.h>

void add(int a,int b)
{
int t=0;
if (a>b)
{
t=a;
a=b;
b=t;
}
// printf("%d,%d\n",a,b);
}
void main()
{
int a,b;
printf(“請輸入兩個數值!: “);
scanf(”%d%d”,&a,&b);
add(a,b);
printf("%d,%d\n",a,b);

}

//可以看出,並沒有交換資料,而是正常輸出,這是因為交換的只是在小單元中,而在主程式中並沒有

5.採用指標取地址交換,發現是可以進行交換輸出的

include<stdio.h>

void add(int *a,int *b)
{
int t=0;
if (a>b)
{
t=*a;
*a=*b; // 而當進行取地址的時候在,再次呼叫發現是可以進行交換的
*b=t;
}
// printf("%d,%d\n",a,b);
}
void main()
{
int a,b;
printf(“請輸入兩個數值!: “);
scanf(”%d%d”,&a,&b);
add(&a,&b);
printf("%d,%d\n",a,b);

}

//可以看出,並沒有交換資料,而是正常輸出,這是因為交換的只是在小單元中,而在主程式中並沒有

6.用陣列的形式採用冒泡發進行數值大小的排序,並輸出在螢幕上。
#include<stdio.h>
#define SIZE 10
void main()
{
int a[SIZE]={1 ,2,36,5,6,7,9,56,34,23};
int pass;
int i;
int hold;
printf(“Data item\n”);

for(i=0;i<SIZE;i++)
{
	printf("%4d",a[i]);
}

for(pass=1;pass<SIZE;pass++)
{
	for(i=0;i<SIZE-1;i++)
{
		if(a[i]>a[i+1])
		{	hold=a[i];
		a[i]=a[i+1];
		a[i+1]=hold;
		}

}
}
	printf("\n");
printf("jieguo\n");
for(i=0;i<SIZE;i++)
{
	printf("%4d",a[i]);
}
printf("\n");

}

7.在C語言中開啟一個檔案,以只讀的形式,如果打開了,就返回success,否則就返回開啟fail。最後注意要對開啟的檔案進行關閉。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
FILE *fp;
char *filepath= “C:/Users/Administrator/Desktop/test1.txt”;//絕對路徑,從根目錄開始進行 otherwith 可以是用相對路徑進行開啟,不過使用相對路徑的時候要注意能夠將需要開啟的檔案放入到程式相應的路徑下,否則路徑無效
fp=fopen(filepath,“r”);
if(fp==NULL) //判斷是否開啟成功,如果不成功,則返回,並將系統進行關閉。
{
printf(“open fail!\n”);
system(“Pause”);
// return 1;
}
else
{
printf(“opensuccess!\n”);
}
fclose(fp);
}