#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
void main1()
{
char str[50];
char str1[20];
char str2[20];
gets(str1);//获取字符串初始化
scanf("%s",str2);//获取字符串初始化
printf("%s,%s",str1,str2);
sprintf(str,"%s %s",str1,str2);//
system(str);
}
int execmd(char *in,char* out)
{
FILE *pipe=_popen(in,"r");//打开管道 读取
if(!pipe)//管道创建为空,返回0
{
return 0;
}
while(!(feof(pipe)))//判定文件是否结束
{
char buffer[128];
if(fgets(buffer,128,pipe))//获取每一行的数据
{
strcat(out,buffer);//连接字符串
}
}
_pclose(pipe);//关闭管道
return 1;
}
//获取字符串的输出
void main23()
{
char CMDin[50]={0};//输入的指令
char CMDout[4096]={0};//输出的语句
scanf("%s",CMDin);//获取结果
execmd(CMDin,CMDout);//获取结果
printf("%s",CMDout);//打印结果
//printf("%s",CMDin);
//system(CMDin);
//system("pause");
}
int mystrlen(char *p)
{
int num=0;
while(*p!='\0')
{
num++;
p++;
}
return num;
}
void main()
{
char str[50];
int leng;
scanf("%s",str);
leng=mystrlen(str);
printf("==%d\n",leng);
//system(str);
system("pause");
}
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
void main1()
{
char str[50]="notepad";
printf("%x\n",str);
printf("\n%c,%d",'\0','\0');//空字符 ,0
printf("\n%c,%d",0,0);//编号为0的字符,0,内存的整数
printf("\n%c,%d",'0','0');//字符0,字符0的编号
// system(str);
system("pause");
}
void main2()
{
//字符串必须要有一个\n
//char str[4]={'c','a','l','c'};//默认没有初始化的字符填充0
char str[5]="calc";
printf("%d\n",sizeof("calc"));
printf("%s",str);
system(str);
system("pause");
}
void main4()
{
//char str[5]={'c','a','l','c'};
char *p="tasklist";//将常量字符串的首地址赋值给p
printf("%d,%d",sizeof(p),sizeof("tasklist"));
system(p);//本质上是字符串的首地址
system("pause");
}
void main5()
{
char *p="tasklist";
printf("\n%c,%x",*p,p);
while(*p)//不为0的时候执行 *p==0 跳出循环
{
printf("\n%c,%x",*p,p);
p++;
}
system("pause");
}
//字符串数组
void main6()
{
char str[10]={"notepad"};//大括号可以省略
system(str);
}
void main7()
{
//字符串数组
char str[10][10]={
{"notepad"},
{"calc"},
{"tasklist"},
{"ipconfig"}
};
char(*p)[10]=str;//指向二维数组的指针
int i;
for(i=0;i<4;i++)
{
system(p[i]);//字符串元素的首地址
}
system("pause");
}
//字符串修改字符
void main8()
{
char str[10]="tasklist";
char*p=str;//
p=p+4;
*p='l';
system(str);
system("pause");
}
void main9()
{
char str[10]="taskoist";
char*p=str;//
p=p+4;
*p='l';
system(str);
system("pause");
}
void main10()
{
char *p="taskoist";//taskoist 常量不可以修改
char *ps=p;
ps+=4;
// *ps='l';
system(ps);
}
//字符指针变量与字符数组
//cha *cp ; 与 char str[20]
//str 是地址常量,cp 是地址变量
//cp 接受键入字符串时,必须先开票存储空间
void mai11n()
{
char *p=malloc(sizeof(char)*20);
scanf("%s",p);
system(p);
}
void main12313()
{
char str[20]="tasklist";
char *p=str;
int i=0;
printf("%s",str);//str 数组首地址,遇到\0 就自动结束
for(p=str;p<str+20;p++)
{
printf("%c",str);
}
for(i=0;i<20;i++)
{
printf("%c",str[i]);
}
}
void mainrwe()
{
//c 语言把所有的设备当作文件处理的。
printf("printf-helloworld\n");
fprintf(stdout,"fprintf-helloworld");
char str[30];
scanf("%s",str);
fscanf(stdin,"%s",str);
system(str);
getchar();
}
#include <stdio.h>
#include <stdlib.h>
void mainmn()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i=0;
int j=0;
int *p=&a[0][0];
int data=1200;
printf("%x",a);
for(;p<&a[0][0]+12;p++)
{
*p=data;
data-=100;
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("\na[%d][%d]=%d",i,j,a[i][j]);
}
}
}
void mainklj()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
//int *p=a;
//int **p=a;
int(*p)[4]=a;//每个元素都是一个一维数组 指向有四个元素的一维数组
int i;
int j;
printf("%d,%d\n",sizeof(p),sizeof(*p));//p 4, 16 *p=16 说明是指向4个数组的指针
printf("%d,%d,%d\n",p,p+1,p+2);//相隔16 行指针,每移动一个一行的大小
printf("%d,%d,%d\n",p[0],p[1],p[2]);//跟上面相等
printf("%d","%d",sizeof(p),sizeof(p[0]));//4,16 p[0] 和*p 是等价的。
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
//p 和a 正真等价 2维数组做游戏经常用到
printf("\n..%d",p[i][j]);
printf("\n..%d",a[i][j]);
printf("\n..%d",*(*(a+i)+j));
printf("\n..%d",*(*(p+i)+j));
}
}
getchar();
}
void main243243242()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i;
int j;
int(*p)[4]=a;//用一个指向有四个元素的一维数组的指针指向a
printf("%d",sizeof(a));//48
printf("\n...%d",sizeof(p));//p行指针
printf("\n...%d",sizeof(*p));//*p 取出行指针内容,可以得到一行多大
printf("\n...%d",sizeof(*p+1));//列指针只有4个元素 列指针每次移动一个+4 个字节
//*p+0 //在某一行,取出第0个元素的地址 int 类型
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
//p 和a 正真等价 2维数组做游戏经常用到
printf("\n..%d,%x",p[i][j],&p[i][j]);
printf("\n...%d,%x",*(p[i]+j),p[i]+j);
printf("\n...%d,%x",*(*(p+i)+j),*(p+i)+j);
/*printf("\n..%d",a[i][j]);
printf("\n..%d",*(*(a+i)+j));
printf("\n..%d",*(*(p+i)+j));*/
}
}
getchar();
}
void main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i;
int j;
int(*p)[4]=a;//用一个指向有四个元素的一维数组的指针指向a
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
//p 和a 正真等价 2维数组做游戏经常用到
printf("\n..%d,%x",p[i][j],&p[i][j]);
printf("\n...%d,%x",*(p[i]+j),p[i]+j);
printf("\n...%d,%x",*(*(p+i)+j),*(p+i)+j);
/*printf("\n..%d",a[i][j]);
printf("\n..%d",*(*(a+i)+j));
printf("\n..%d",*(*(p+i)+j));*/
}
}
//a 是一个常乐指针,数组名的地址就是地址
printf("\n%x,%x",a,&a);
//数组名,数组名实际上就是地址,取数组的地址
printf("\n%x,%x",main,&main);//函数名实际上就是地址 取函数地址,函数名会解析为取函数地址
printf("\n%x,%x",p,&p);//p 是一个变量指针
getchar();
}