#
#include<string.h>
#include<stdio.h>

int main()


{
char a[9] = "fadsgdga";
char b[13]= "fadsgdgdfsd";

int cmp = memcmp(a,b,8);
if(cmp == 0)

{
printf("相等");
}
else if( cmp == 1)

{
printf("大于");
}
else

{
printf("小雨");
}
return 0;
}
#include<string.h>
#include<stdio.h>
struct Infomation


{
char tag[4];
char name[31];
char singer[31];
char aname[31];
char year[5];
char content[29];
char other[4];
};

int main()


{
FILE *pFile;
pFile = fopen("11.mp3","r+");

char strbuf[129];

fseek(pFile,-128,2);
int ret = 0;

ret = fread(strbuf,128,1,pFile);

Infomation a;
memset(&a,0,sizeof(Infomation));

rewind(pFile);

memcpy(&a.tag,strbuf,3);
memcpy(&a.name,&strbuf[3],30);

memcpy(&a.singer,&strbuf[33],30);
memcpy(&a.aname,&strbuf[63],30);
memcpy(&a.year,&strbuf[93],4);
memcpy(&a.content,&strbuf[97],28);
memcpy(&a.other,&strbuf[125],3);

printf("%s\n",a.tag);
printf("%s\n",a.name);
printf("%s\n",a.singer);
printf("%s\n",a.aname);
printf("%s\n",a.year);
printf("%s\n",a.content);
printf("%s\n",a.other);

fclose(pFile);
return 0;

}
//
//MP3歌曲的基本信息存在了MP3文件的最后128個字節里,
//其結構是:
//1-3 TAG
//4-33 歌曲名(Take Me To Your Heart )
//34-63 歌手名(Michael Learns to Rock)
//64-93 專輯名(Take Me to Your Heart)
//94-97 年(2004)
//98-125 備注 (http://www.uptu.com)
//126 保留位,這時為0,則說明有音軌,下一位就是音軌
//127 保留位,為音軌(第幾首歌)(OC)
//128 保留位 (風格)(66)
//請寫出一個讀取MP3歌曲信息的函數,將信息存放在結構成員變量中。

#include<stdio.h>
#include<string.h>

int main()


{
//下面的寫法是可以的
char a[5] = "abcd";
const char b[10] = "safajshjf";
const char *c = "asdfdsgd";
char *const d = "safdsfgsdg";
const char* const e = "adsgfsdg";


//下面的c和上面的d,e不同,c不是const的,而是c指向的內存區是const的,所以下面的寫法可以
c = "fasdffds";
//下面的三行都不行,原因是數組名除了初始化時,再也不能作為左值了。而const類型的d和e也不能再作為左值。

/**//*a="afds";
b = "asfdsfdgg";
d = "fasdgsdg";
e = "fasdfgg";*/



//下面的可以,因為第一參數要求是非const的,下面的第一參數都滿足條件
strcpy(a,"sdfs");
strcpy(d,"sfsdgd");
//下面的不通過,因為第一參數要求是非const的,因為const常量不能修改

/**//*strcpy(b,"sfsdgf");
strcpy(c,"sfsgddg");
strcpy(e,"safsgdg");*/


//下面的寫法是可以的,因為上面的a數組并不是常量,而是把“abcd”賦值給了a所指向的內存區,所以a的地址可以賦值給別的指針
char *f=a;
f = d;
//下面的是不行的,因為b的數組內存是常量的,不可以進行修改,所以不能把b的地址賦值給非const指針

/**//*f = b;
f = c;
f =e;*/


//下面的五個都是可以的,因為const和非const的變量都可以賦值給const類型的變量
const char *g = a;
g =b;
g = c;
g = d;
g = e;

//下面嘗試修改上面的五塊內存區


return 0;
}

//總結:
//const指針的用法如上例所示,分別是限制指針和指針內存區域的,但是雖然有這些限制,也僅是針對當前變量的限制,如果原本的內存地址已知,后來賦值給了const*類型的
//指針,那么利用原來的內存地址依然是可以修改該內存區域的。
//
//數組名相當于*const類型的,因為數組名和*const都在以后都不能再給數組名或指針賦值,而只能修改數組的內存區或指針指向的內存區。
//const* typename const類型的是指針和內存區都不可以修改的。
//
//無論是整形數組還是字符數組,初始化的時候都是賦值初始化的,不要把字符數組的初始化理解成把一個常量字符串的指針賦值給了字符數組名。

//下面的寫法是可以的
char a[5] = "abcd";
00401740 mov eax,dword ptr [___xi_z+2Ch (4020E4h)]
00401745 mov dword ptr [ebp-0Ch],eax
00401748 mov cl,byte ptr [___xi_z+30h (4020E8h)]
0040174E mov byte ptr [ebp-8],cl
const char b[8] = "safader";
00401751 mov edx,dword ptr [___xi_z+34h (4020ECh)]
00401757 mov dword ptr [ebp-1Ch],edx
0040175A mov eax,dword ptr [___xi_z+38h (4020F0h)]
0040175F mov dword ptr [ebp-18h],eax
const char *c = "asdfdsgd";
00401762 mov dword ptr [ebp-24h],offset ___xi_z+3Ch (4020F4h)
char *const d = "safdsfgsdg";
00401769 mov dword ptr [ebp-20h],offset ___xi_z+48h (402100h)
const char* const e = "adsgfsdg";
00401770 mov dword ptr [ebp-28h],offset ___xi_z+54h (40210Ch)
//可以看出來,這是上面的程序的前五行的代碼的反匯編,前兩行的是賦值,匯編代碼可以看出來,先把靜態區中的常量字符串賦值給了eax,然后后eax轉給字符數組的內存區,但是后面的三個則是直接把靜態區的常量字符串的地址賦值給了指針,如果只賦值給const*指針還好,但是連*const指針也是直接賦值,結果導致了后面的strcpy(d,"sfd")的靜態區內存訪問錯誤
#include<stdio.h>
int main()


{
printf("請輸入年份:");
int year = 0;
scanf("%d",&year);
if(year%4 == 0 )

{
if(year%100 == 0 )

{
if(year%400 == 0)

{
printf("%d是閏年",year);
}
else

{
printf("%d不是閏年",year);
}
}
else

{
printf("%d是閏年",year);
}
}
else

{
printf("%d不是閏年",year);
}
scanf("%d",&year);
return 0;
}
#include<stdlib.h>
#include<stdio.h>
int main()


{
char *p;
p = (char*)malloc(10);
p = "Hello";
printf("%s\n",p);
return 0;
}

#include<string.h>
#include<stdio.h>
#include<malloc.h>

int main()


{
char *str;
str =(char*)malloc(10);
strcpy(str,"Hello");
printf("String is %s",str);
free(str);
return 0;
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int sort_func(const void*a,const void*b)


{
return (strcmp((const char*)a,(const char*)b));
}

int main()


{

char list[5][4] =
{"car","cat","cab","cap","can"};
qsort((void*)list,5,sizeof(list[0]),sort_func);
for(int i = 0; i <5; ++i)

{
printf("%s",list[i]);
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>

int main()


{
float f;
char *str = "34.31";
f = atof(str);
printf("%.2f",f);
return 0;

}

#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int main()


{
int i;
time_t t;
srand((unsigned)time(&t));
printf("ten random numbers from 0 to 99\n\n");
for(i = 0; i<10; i++)

{
printf("%d\n",rand()%100);
}
}
摘要: #include<stdio.h>#include<memory.h>#include<math.h>struct PrimeBlock{ PrimeBlock(); void addPrime(int );  ...
閱讀全文