# Alvin's c_note
[TOC]
:::success
>[name=AlvinXD]
:::
## ~~Alvin好帥~~
## c 知識區
----
### '\0'
\0為一字符串之結尾。
在字符數組中’\0’是佔一個位置的!
例如 定義char c[6]=“hello”,而在內存中字符數組 c 則是"hello\0";
即’\0’在數組中佔有空間卻不被我們看到;
所以如果一個長度為10的字符串要放在字符數組裡的話就應該把字符數組的長度定義為11;
----------------------------
### about file
| 模式 | 描述 | 開檔失敗 | 指標位置 | 清空內容 | 讀取位置 | 寫入位置 | 注 |
| ---- | ---- | -------- | -------- | -------- | -------- | --- | --- |
| r | 只讀 | 開導失敗 | 開頭 | 否 | 任意讀 | 不可寫入 | - |
| w | 只寫 | 新開檔 | 開頭 | 是 | 不可讀 | 任意位置寫入 | 會覆蓋原有位置 |
| a | 只寫 | 新開檔 | 結尾 | 否 | 不可讀 | 只能寫尾部 | - |
| r+ | 讀寫 | 開導失敗 | 開頭 | 否 | 任意讀 | 任意位置寫入 | 會覆蓋原有位置 |
| w+ | 讀寫 | 新開檔 | 開頭 | 是 | 任意讀 | 任意位置寫入 | 會覆蓋原有位置 |
| a+ | 讀寫 | 新開檔 | 結尾 | 否 | 任意讀 | 只能寫尾部 | - |
---
### 輸出格式
| 符號 | 輸出 | 符號 | 輸出 |
| ---- | -------- | ---- | ---------------------------- |
| %a | 浮點值 | %s | 讀入字符遇到空格制符號等停止 |
| %c | 一個字符 | %f | 讀小數 |
| %d | 讀dec | %p | 輸入指標 |
| %o | 讀oct | %u | 無符號dec |
| %x | 讀hex | %% | 輸出% |
----
### %[^]
使用於sscanf,取%[^]以前的字符,[]裡可加字符或A-Z、a-z、A-z、0-9
諾有*表示捨棄該字符
----
### pointer
a= 0x12345678
| Big-Endian | 內容 | Little-Endian | 內容 |
| ---------- | --- | ------------- | --- |
| 0x1000 | 12 | 0x1000 | 78 |
| 0x1001 | 34 | 0x0fff | 56 |
| 0x1002 | 56 | 0x0ffe | 34 |
| 0x1003 | 78 | 0x0ffd | 12 |
動態記憶體分配(Dynamic memory allocation)
malloc() 取得記憶體
free() 釋放記憶體
```c=
#define max 20
int *point;
point=(int *)malloc(max * sizeof(int));
free(point);
```
----
## odd_or_even
```c=
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int num;
int new_num;
printf("int a number:");
scanf("%d", &num);
new_num = num %2;
if (new_num == 0)
printf("%d is even",num);
else
printf( "%d is odd",num);
return 0;
}
```
## 1a1b
```c=
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int a,b,c,d,a1,b1,c1,d1,num,aa=0,bb=0,new_input_num;
char input_num[4];
num = 1234;
a= (num/1000)%10;
b= (num/100)%10;
c= (num/10)%10;
d= (num/1)%10;
printf("int a num:");
scanf("%s",&input_num);
new_input_num = atoi(input_num);
a1= (new_input_num/1000)%10;
b1= (new_input_num/100)%10;
c1= (new_input_num/10)%10;
d1= (new_input_num/1)%10;
if (a==a1)
aa=aa+1;
else if ((a==c1) ||(a==d1) ||(a==b1) )
{
bb=bb+1;
}
////
if (b==b1)
aa=aa+1;
else if ((b==a1)||(b==c1)||(a==d1))
{
bb=bb+1;
}
///
if (c==c1)
aa=aa+1;
else if ((c==a1) ||(c==b1)||(c==d1))
{
bb=bb+1;
}
/////
if (d==d1)
aa=aa+1;
else if ((d==a1)||(d==c1)|| (d==a1))
{
bb=bb+1;
}
printf("%d A %d B",aa,bb);
}
```
## common_leap
```c=
#include <stdio.h>
int main(){
int year;
printf("input a year:");
scanf("%d",&year);
if((year%4==0) && (year%100!=0) ||(year%400==0))
printf ("%d is common\n",year);
else
printf ("%d is leap\n",year);
}
```
## common_leap
```c=
#include<stdio.h>
int main(){
FILE *fp; FILE *pf;
int year;
fp = fopen("./file.txt","r");
pf = fopen("./file.txt","r+");
if (fp == NULL){
printf("error");
}
else{
while (feof(fp)==0){
fscanf(fp,"%d",&year);
if(((year%4==0) && (year%100!=0) ||(year%400==0))){
printf ("%d是閏年\n",year);
fprintf (pf,"%d是閏年\n",year);}
else {
printf ("%d是閏年\n",year);
fprintf (pf,"%d是平年\n",year);
}
}
}
fclose(fp);
return 0;
}
```
>file
>>73209 >>>>73209是平年
299 >>>>299是平年
2021 >>>>2021是平年
500 >>>>500是平年
## sec to day, hour, min, sec
```c=
#include <stdio.h>
int main(void){
int sec, min, hour,day;
printf("sec:");
scanf("%d", &sec);
day = sec /86400;
hour = (sec%86400) / 3600;
min = (sec%3600) / 60;
sec = sec % 60;
printf("%d:%d:%d:%d\n", day, hour,min,sec);
return 0;
}
```
## find the common on file
```c=
#include <stdio.h>
#include <stdlib.h>
#define max 65535
int main(){
FILE *fp;
int c[max];
int i,j,k;
fp = fopen("./file.txt", "r");
if (fp == NULL){
printf("error");
}
for(i=0;i<4;i++){
fscanf(fp,"%d",&c[i]);
}
for ( i = 0; c[i]; i++)
{
if (c[i]%2==0)
{
printf("%d\n",c[i]);
}
}
fclose(fp);
return 0;
}
```
>file:
>>768
993
753
10
## check password
```c=
#include <stdio.h>
#include <string.h>
int main(){
char psw[20];
char check_psw[] = "passwd";
printf("int a psw:");
scanf("%s", psw);
!strcmp(psw,check_psw)?
printf("in"):
printf("error");
}
```
## read then sum
```c=
#include <stdio.h>
int main(){
FILE *fp;
int c[6];
int i,sum=0;
fp = fopen("./file.txt", "r");
if (fp == NULL){
printf("error");
}
for(i=0;i<6;i++){
fscanf(fp,"%d",&c[i]);
}
for ( i = 0; i < 6; i++)
{
sum=sum+c[i];
}
printf("%d",sum);
}
```
>file:
>>546
886
1
95
864
55
## read A file then write to B file
```c=
#include <stdio.h>
int main(){
int a=0,b=0,c=0,sum=0;char op1,op2;
FILE *fp;FILE *pf;
fp = fopen("./read.txt", "r");
pf = fopen("./write.txt", "a");
while (feof(fp)==0){
fscanf(fp,"%d%c%d%c%d",&a,&op1,&b,&op2,&c);
switch (op1)
{
case '+':
sum=a+b;
break;
case '-':
sum=a-b;
break;
case '*':
sum=a*b;
break;
case '/':
sum=a/b;
break;
default:
break;
}
switch (op2)
{
case '+':
sum=sum+c;
break;
case '-':
sum=sum-c;
break;
case '*':
sum=sum*c;
break;
case '/':
sum=sum/c;
break;
default:
break;
}
printf("%d\t",sum);
}
fclose(fp); fprintf(pf,"%d",sum);
}
```
>file:
>>104+757-4
11+4-2
20+6/7
## year to year
```c=
#include <stdio.h>
#include <stdlib.h>
int main(){
int yy,mm,dd,ww,total=0,roc_y=0;
printf("輸入年(民國)月日:");
scanf("%d,%d,%d",&roc_y,&mm,&dd);
yy=roc_y +1911;
for(int i=1911;i<yy;i++){
total=total+365;
if((i%4==0) && (i%100!=0) ||(i%400==0)){
total=total+1;
}
}
for (int m = 1; m < mm+1; m++)
{
switch (m)
{
case 1:
total=total+0;
break;
case 2:
total=total+31;
break;
case 3:
if(((m%4)==0 && ((m %100)!=0)) || (m%400==0)){
total=total+29;
break;
}
else{
total=total+28;
break;
}
case 4:
total=total+31;
break;
case 5:
total=total+30;
break;
case 6:
total=total+31;
break;
case 7:
total=total+30;
break;
case 8:
total=total+31;
break;
case 9:
total=total+31;
break;
case 10:
total=total+30;
break;
case 11:
total=total+31;
break;
case 12:
total=total+30;
break;
default:
break;
}
}
total=total+dd-1;
ww=total%7;
if (total==0){
ww=7;
}
printf("過了%d天,星期%d",total,ww);
return 0;
}
```
## ASCII
```c=
#include <stdio.h>
#define MAX_STRING_LENGTH 65535 // max long
int main(){
char s[MAX_STRING_LENGTH];
printf("any character:",MAX_STRING_LENGTH);
scanf("%s",s);
for(int i = 0; s[i]; i++){
printf("%c的ASCII:%d\t",s[i],s[i]);
}
}
```
## find a number then stop in a file
```c=
#include <stdio.h>
#define max 99884
int main(){
FILE *fp;
int c[max];
int num,mx=0,sm=0;
int i=0,sum=0;
fp = fopen("./flie.txt", "r");
if (fp == NULL){
printf("error");
}
for(i=0;feof(fp)==0;i++){
fscanf(fp,"%d",&c[i]);
if (c[i]==999){break;}
}
for (i=0;c[i];i++){
if (c[i]==999){break;}
if (c[i]>mx){mx=c[i];}
}
for (i=0;c[i];i++){
if (c[i]==999){break;}
if (c[i]<sm){sm=c[i];}
}
printf("max=%d,min=%d",mx,sm);
}
```
>file:
>>66
-1
77
9999
999
1
2
947
48
50
935
-45
## Bubble_Sorting
```c=
#include<stdio.h>
#include<stdlib.h>
void bubble_sorting(int array[],size){
int temp;
int i,j;
//size = sizeof(array)/sizeof(array[0]);
//printf("%d\n",sizeof(array));
///函式裡無法使用sizeof
for (int i = 0;array[i]; i++)
{
printf("%d\t",array[i]);
}
for (i = 0;i < size-1; i++)
{
for (j = 0; j < size-1-i; j++)
{
if (array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for (int i = 0;array[i]; i++)
{
printf("%d\t",array[i]);
}
}
int main(){
int size;
int arr[]={-3,-1,9,9,4};
size = sizeof(arr)/sizeof(arr[0]);
bubble_sorting(arr,size);
return 0;
}
```
## 規律
```c=
#include <stdio.h>
int main(){
int a,sum=0, i,b=0;
scanf("%d",&a);
for(i = 1; i <= a; i++){
if(sum%2==0){
sum+=3;
}
else{
sum+=5;
}
printf("%d+",sum);
b+=sum ;
}
printf("\b=%d",b) ;
return 0;
}
```
>ex:
>>n=7
>> 3 + 8 + 11 + 16 + 19 + 24 + 27 = 108
>>規律:奇數+5 偶數+3
## funaction
$\dfrac{b-2*\sqrt{(10a+4)^3}}{(c+1)^2}$
```c=
#include <stdio.h>
#include <stdlib.h>
int main() {
int a,b,c;
float sum;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
sum=b-(2*(sqrt(pow(10*a+4,3))))/(pow(c+1,2));
printf("%.2f",sum); //.2f 0.xzy y四捨五入 輸出至z
return 0;
}
```
## read a file then check triangle
```c=
#include <stdio.h>
#include <stdlib.h>
int main() {
int a,b,c;
char o1,o2;
FILE *fp;
fp = fopen("./exam.dat", "r");
while(feof(fp)==0){
fscanf(fp,"%d%c%d%c%d",&a,&o1,&b,&o2,&c);
}if (a+b>c && b+c>a && a+c>a){
if ((a*a)+(b*b)==(c*c) )
{
printf("成立,直角三角形");
}
else if ((a*a)+(b*b)<(c*c) )
{
printf("成立,鈍角三角形");
}
else if ((a*a)+(b*b)>(c*c))
{
printf("成立,銳角三角形");
}
}
else printf("不是三角形");
return 0;
}
```
## Enter the specified value and stop then find the max
```c=
#include <stdio.h>
#include <stdlib.h>
int main() {
int num=0,max=0;
while(1){
scanf("%d",&num);
if(num==(-6666)){break;}
else if(num>max){max=num;}
}
printf("max = %d",max);
}
```
## Enter the specified value and sorting
```c=
#include<stdio.h>
#include<stdlib.h>
#define max 99
void bubble_sorting(int array[],size){
int temp;
int i,j;
for (i = 0;i < size-1; i++){
for (j = 0; j < size-1-i; j++){
if (array[j]<array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
int main(){
int nums[max];
int nnum;
int size,temp,i,j,k=0;
while (1)
{
printf("請輸入要排序的整數(輸入9999結束):");
scanf("%d",&nnum);
if (nnum==9999){break;}
nums[k]=nnum;
k++;
}
bubble_sorting(nums,k);
for (int i = 0;i<k; i++)
{
printf("%d\t",nums[i]);
}
return 0;
}
```
## n=6 1,2,3,4,5,6 write in a file
```c=
#include <stdio.h>
#include <stdlib.h>
int main() {
int i,j;
FILE *fp;
fp = fopen("./exam.out", "w");
scanf("%d",&j);
for(i=1;i<j;i++){
fprintf(fp,"%d,",i);
}
fprintf(fp,"%d",j);
return 0;
}
```
## factorial
```c=
#include<stdio.h>
int main(){
int i,j,sum=1;
scanf("%d",&j);
for ( i = j; j > 0; j--)
{
sum=sum*j;
}
printf("%d!=%d",i,sum);
return 0;
}
```
>ex: 2! =2*1
## random
```c=
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand( time(NULL) );
int min = 0; //range min
int max = 1; //range max
int x = rand() % (max - min + 1) + min;
printf("\n%d\n",x);
system("pause");
return 0;
}
```
## max,mid,min
```c=
#include<stdio.h>
int main(){
int a,b,c,m=0;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b) {m=a;a=b;b=m;}
if(a>c) {m=a;a=c;c=m;}
if(b>c) {m=b;b=c;c=m;}
printf("min=%d,mid=%d,max=%d",a,b,c);
}
```
## right_triangle,triangle,overturn_triangle,diamond
```c=
#include<stdio.h>
void right_triangle(){
int n;
printf("n=");
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
printf("*");
}
printf("\n");
}
}
void triangle(){
int n;
printf("n=");
scanf("%d",&n);
for(int i=0;i<n;i++){
for (int j = n; j >=i; j--)
{
printf(" ");
}
for (int j = 0; j <=i; j++)
{
printf("*");
printf(" ");
}
printf("\n");
}
}
void overturn_triangle(){
int n;
printf("n=");
scanf("%d",&n);
for(int i=0;i<n;i++){
for (int j = 0; j <=i; j++)
{
printf(" ");
}
for (int j = n; j >i; j--)
{
printf("*");
printf(" ");
}
printf("\n");
}
}
void diamond(){
int n;
printf("n=");
scanf("%d",&n);
for(int i=0;i<n;i++){
for (int j = n; j >=i; j--)
{
printf(" ");
}
for (int j = 0; j <=i; j++)
{
printf("*");
printf(" ");
}
printf("\n");
}
printf(" ");
for(int i=0;i<=n;i++){
printf("*");
printf(" ");
}
printf("\n");
for(int i=0;i<n;i++){
for (int j = 0; j <=i; j++)
{
printf(" ");
}
printf(" ");
for (int j = n; j >i; j--)
{
printf("*");
printf(" ");
}
printf("\n");
}
}
int main(){
int c;
printf("[1]right_triangle\n[2]triangle\n[3]overturn_triangle\n[4]diamond\n:");
scanf("%d",&c);
switch (c)
{
case 1:
right_triangle();
break;
case 2:
triangle();
break;
case 3:
overturn_triangle();
break;
case 4:
diamond();
break;
default:
printf("error");
break;
}
}
```
## Find length of string (without using strlen)
```c=
#include<stdio.h>
int main(){
char str[]="a string";
for(int i =0;str[i]!='\0';i++){
nnum+=1;
}
printf("%d\n",nnum-1);
}
}
///////////using strlen//////////
#include<stdio.h>
#include<string.h>
int main(){
char str[]="string";
printf("len=%d\n",strlen(str));
}
```
## 讀取data.txt中的字串,並能夠計算出每列有幾個字元
```c=
#include<stdio.h>
#include<stdlib.h>
#define max 99884
int main(){
char num[max];
char str[max+1];
int nnum=0;
int line =0;
FILE *fp;
fp=fopen("./file.txt","r");
if (fp ==NULL)printf("error: file can't open");
while ((fgets(str,max,fp)!=NULL))
{
line+=1;
if (feof(fp)!=NULL)break;
printf("第%d行有",line);
for(int i =0;str[i]!='\0';i++){
nnum+=1;
}printf("%d個字\n",nnum-1);
nnum=0;
}
printf("第%d行有",line);
for(int i =0;str[i]!='\0';i++){
nnum+=1;
}printf("%d個字\n",nnum);
}
```
~~~
// If you using this code your file's line should +1
// 1 aaa
// 2 bb
// 3 ccc
//
#include<stdio.h>
#include<stdlib.h>
#define max 99884
int main(){
char num[max];
char str[max+1];
int nnum=0;
int line =0;
FILE *fp;
fp=fopen("/file.txt","r");
if (fp ==NULL)printf("error: file can't open");
while (fgets(str,max,fp)!=NULL)
{
line+=1;
printf("第%d行有",line);
for(int i =0;str[i]!='\0';i++){
nnum+=1;
}printf("%d個字\n",nnum-1);
nnum=0;
}
}
~~~
>file:
>aaa
>bb
>ccc
## use %[^] get terget
~~~c=
#include<stdio.h>
#include<stdlib.h>
#define max 99
int main(){
char name[max];
int age;
char tmp[]="name=john&&age=21";
sscanf(tmp,"%*[^=]=%[^&&] %*[^=]=%d",name,&age);
printf("%s %d\n",name,age);
}
// name = john &&age = 21
// %*[^=] = %[^&&] %*[^=] = %d
// 在sscanf裡使用%[^]來抓取值而不使用%S
// %s 判斷終止條件是 '\0' \n 空白
~~~
## Big-Endian or Little-Endian
```c=
main(){
int a = 0x123456;
char *p;
p = &a;
printf("p=%#hhx\n",*p);
printf("p=%#hhx\n",*(p+1));
printf("p=%#hhx\n",*(p+2));
}
```
>output:
>p=0x56
>p=0x34
>p=0x12
```c=
int main(){
int a=100,b=200;
int *p;
p=&a;
printf("%d,p point=%x,num=%d\n",a,p,*p);
// ^ get memory
p=&b;
printf("%d,p point=%x,num=%d\n",b,p,*p);
// ^ get memory
}
```
>output:
>100,p point=ef7df7c0,num=100
>200,p point=ef7df7bc,num=200
## malloc
```c=
#include<stdio.h>
#include<stdlib.h>
void bubble_sorting(int array[],int size){
int temp;
int i,j;
for (i = 0;i < size-1; i++)
{
for (j = 0; j < size-1-i; j++)
{
if (array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
int main(){
int a,i,k=0;
int *pa;
int data;
FILE *fp;
fp = fopen("./1214.txt","r");
if (fp==NULL)
{
printf("error");
}
else {
/// read file and get number
for ( i = 0;feof(fp)==NULL; i++)
{
fscanf(fp,"%d",&data);
k++;
}
pa=(int *)malloc(k * sizeof(int)); //get memory
fclose(fp);
fp = fopen("./1214.txt","r");
for ( i = 0;feof(fp)==0; i++)
{
fscanf(fp,"%d",&pa[i]);
}
bubble_sorting(pa,k);
for ( i = 0;i<k; i++)
{
printf("%d\n",pa[i]);
}
}
Free(pa);
fclose(fp);
}
```
>1214.txt
>12
>23
>344
>54
>3
>-34
## array reverse
```c=
#include<stdio.h>
#include<stdlib.h>
void reverse(int *array,int size){
int i,j,temp;
for( i=0;i < size/2; i++){
temp = array[i];
array[i]=array[size-i-1];
array[size-i-1] = temp;
}
}
void display(int *array,int size){
int i;
for ( i = 0; i < size; i++)
{
printf("%d\t",array[i]);
}
}
int main(){
int i,j,n;
int data[] = {2,10,7,4,99,5,7};
n=sizeof(data)/sizeof(data[0]);
reverse(&data[0],n);
display(&data[0],n);
}
```
## max to min or min to max
```c=
#include<stdio.h>
#include<stdlib.h>
void bubble_sorting(int *array,int size,int order){
int i,j,temp;
// or int size = 8;
switch (order)
{
case 0:
for (i = 0;i < size-1; i++){
for (j = 0; j < size-1-i; j++){
if (array[j]<array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
break;
case 1:
for (i = 0;i < size-1; i++){
for (j = 0; j < size-1-i; j++){
if (array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
default:
break;
}
}
void display(int *array,int size){
int i;
for ( i = 0; i < size; i++)
{
printf("%d\t",array[i]);
}
}
int main(){
int order,size,i;
int score[]={94,63,56,83,79,77,93,22};
size = sizeof(score)/sizeof(score[0]);
printf("order([0] min to max\n [1] max to min):\n");
scanf("%d",&order);
bubble_sorting(&score[0],size,order);
display(&score[0],size);
}
```
## Squares of a Sorted Array
```c=
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void bubble_sorting(int *array,int size){
int i,j,temp;
// or int size = 8;
for (i = 0;i < size-1; i++){
for (j = 0; j < size-1-i; j++){
if (array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
void display(int *array,int size){
int i;
for ( i = 0; i < size; i++)
{
printf("%d\t",array[i]);
}
}
int main(){
int n1,size,i;
int nums[] = {-4,-1,0,3,10};
int *arr;
size = sizeof(nums)/sizeof(nums[0]);
arr=(int *)malloc(size * sizeof(int));
for ( i = 0; i < size; i++)
{
n1 = pow(nums[i],2);
arr[i]= n1;
}
bubble_sorting(&arr[0],size);
display(&arr[0],size);
}
```
## sorting
```c=
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 99
int main() {
int i,j,g,tmp,n=0;
int score[max];
char ttmp[max];
char name[max][9],id[max][10];
char chna[9],chid[10];
FILE *fp;
fp = fopen("./score.txt","r");
if(fp==0)
printf("read file erroe!\n");
else{
i=0;
do{
fscanf(fp,"%s",ttmp);
sscanf(ttmp,"%[^,],%[^,],%d",&name[i],&id[i],&score[i]);
i++;
n++;
}while(feof(fp)==0);
g=n;
printf("name\t id\t score\n");
for ( i = 0; i < n-1; i++) {
for ( j =0; j < n-i-1; j++) {
if (score[j] < score[j+1]) {
tmp=score[j] ;
score[j]= score[j + 1];
score[j + 1] = tmp;
strcpy(chna , name[j]);
strcpy(name[j] , name[j + 1]);
strcpy(name[j + 1] , chna );
strcpy(chid , id[j]);
strcpy(id[j] , id[j + 1]);
strcpy(id[j + 1] , chid );
}
}
}
for (i = 0; i < g; i++) {
printf("%s%10s%10d\n ",name[i],id[i],score[i]);
}
fclose(fp);
return 0;
}
}
```
>file:
>jack,aaa01,98
yora,aaa02,63
sa,aaa03,43
jona,aaa04,52
pawa,aaa05,21
>output
```
name id score
jack aaa01 98
yora aaa02 63
jona aaa04 52
sa aaa03 43
pawa aaa05 21
```
## input then sorting
```c=
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 99
#define num 5
int main() {
int i,j,g,tmp,n=0;
int score[max];
char ttmp[max],na[max],sc[max];
char name[max][9];
char chna[9];
i=0;
for ( i = 0; i < num; i++)
{
printf("name:");
scanf("%s",&na);
printf("score:");
scanf("%s",sc);
strcat(na,sc);
strcpy(ttmp,na);
sscanf(ttmp,"%[^0-9]%d",&name[i],&score[i]);
}
for ( i = 0; i < num-1; i++) {
for ( j =0; j < num-i-1; j++) {
if (score[j] < score[j+1]) {
tmp=score[j] ;
score[j]= score[j + 1];
score[j + 1] = tmp;
strcpy(chna , name[j]);
strcpy(name[j] , name[j + 1]);
strcpy(name[j + 1] , chna );
}
}
}
printf(" ");
for (i = 0; i < num; i++) {
printf("%s\t%d\n ",name[i],score[i]);
}
return 0;
}
```
>input:
>>name:ja
score:12
name:jb
score:22
name:jc
score:54
name:jd
score:11
name:je
score:99
>output:
>>je 99
jc 54
jb 22
ja 12
jd 11