指針不只有地址,還有類型,是一個存儲了地址的變量,能夠改變指向;而地址是一個常量數組
#include<stdio.h> #include<stdlib.h> void main() { int num=10; int data=20; printf("num=%d,&num=%p\ndata=%d,&data=%p\n",num,&num,data,&data); //用鍵盤初始化一個指針:初始化一個數據須要數據的地址,初始化一個指針須要指針的地址 int *p; scanf("%p",&p);//輸入num的地址後,p=&num *p=5; int *pp; int pdata; scanf("%p",&pdata);//輸入data的地址後,pdata=&data pp=(int *)pdata;//把整數轉換成指針 *pp=11; printf("num=%d,&num=%p\ndata=%d,&data=%p\n",num,&num,data,&data); system("pause"); }
#include<stdio.h> #include<stdlib.h> void main() { char *p="abcdefg";//p是一個指針,存儲了常量字符串的地址 char str[10]="abcdefg";//str是數組,接受了常量字符串的賦值 printf("%s,%s\n",p,str); printf("%d,%d\n",sizeof(p),sizeof(str)); //*p='A';//常量不可修改 str[0]='A'; printf("%s,%s\n",p,str);//數組是變量,能夠修改 system("pause"); }
#include<stdio.h> #include<stdlib.h> #include<string.h>//c語言頭文件,無string類 void main0() { char str[20]="hello,yincheng ok"; char ch='o'; char *p=str; while (*p!='\0') { if(*p==ch){ char *p1=p; char *p2=p+1; } } printf("%s\n",p); system("pause"); }
1.刪除字符spa
#include<stdio.h> #include<stdlib.h> #include<string.h>//c語言頭文件,無string類 void main() { char str[20]="hello,yincheng ok"; char ch='o'; char *p=str; while (*p!='\0') { if(*p==ch){ char *p1=p; char *p2=p+1; while (*p2!='\0') { *p1=*p2;//字符串向前移動 p1++; p2++; } *p1='\0';//填充結束符 } p++; } printf("%s\n",str); system("pause"); }
2.刪除字符串3d
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h>//c語言頭文件,無string類 4 5 void main() { 6 char allstr[100]="123456789,hello yincheng, hello c,hello cpp,hello itcast"; 7 char str[10]="hello"; 8 char *p; 9 while ((p=strstr(allstr,str))!=NULL)//能找到字符串就繼續,不然退出循環 10 { 11 int length=strlen(str);//獲取要刪除字符串的長度 12 char *p1=p;//獲取當前位置 13 char *p2=p+length;//獲取要刪除字符串的後繼位置 14 while (*p2!='\0') 15 { 16 *p1=*p2;//根據指針進行字符串拷貝 17 p1++; 18 p2++; 19 } 20 *p1='\0'; 21 //一輪循環消滅一個str:代碼到此返回第9行,對strstr(allstr,str)進行判斷 22 } 23 printf("%s\n",allstr); 24 25 system("pause"); 26 }
#include<stdio.h> #include<stdlib.h> #include<string.h> void execmd(char *cmd,char *result){ char buffer[128]={0};//定義一個字符串緩衝區 FILE *pipe=_popen(cmd,"r");//建立一個管道,執行指令,把管道當作文件來處理。r就是把文件按照讀的方式來操做 if(pipe==NULL){ printf("運行失敗"); return; }else{ while (!feof(pipe))//判斷是否到了文件末尾,沒到就繼續。feof到了末尾返回非0,不然返回0 { if (fgets(buffer,128,pipe))//讀取文件到緩衝區 strcat(result,buffer);//鏈接字符串,將結果保存到result } _pclose(pipe);//關閉管道 return; } } void main() { char output[8096]={0};//定義一個字符串,接收輸出。必須足夠大,不然會溢出 execmd("tasklist",output);//執行指令,將結果保存到output printf("%s\n",output); if(strstr(output,"QQ.exe")==NULL) printf("QQ未運行\n"); else printf("QQ已運行\n"); system("pause"); }
#include<stdio.h> #include<stdlib.h> #include<string.h> void *my_memcpy(void *dst,const void *src,unsigned int Size){ char *tmp=(char *)dst; const char *s=(char *)src; while(Size--) *tmp++=*s++;//進行拷貝,++讓指針向前移動 return dst; } void main() { char strA[20]="*****************"; char strB[20]="123456789987654321"; //memcpy(strA,strB,9); my_memcpy(strA,strB,9); printf("%s\n",strA); system("pause"); }