20150502管道字符串
Posted wzg31796
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20150502管道字符串相关的知识,希望对你有一定的参考价值。
一.管道
1.两个进程间通信(管道)
<span style="font-size:24px;">#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main123()
char str[1024];
gets(str);
puts(str);
system("pause");
int exeshell(char *cmd,char *result) //传递指令,返回结果
FILE *pf = _popen(cmd,"r");//打开一个管道,用这个管道执行cmd
if (pf == NULL)
printf("文件打开失败\\n");
return 0;
else
while (!feof(pf)) //到了文件末尾返回1,没有返回0
char str[256] = 0 ;
if (fgets(str, 256, pf)) //fgets返回读到多少个字符
strcat(result,str);//拼接字符串
_pclose(pf);//关闭管道
return 1;
void main()
char result[1024 * 8] = 0 ;
if (exeshell("tasklist",result)!=0)
printf("%s", result);
char *p = strstr(result, "QQ.exe");
if (p != NULL)
printf("QQ执行中\\n");
else
printf("QQ未执行\\n");
system("pause");
</span>
二.printf可变参数
<span style="font-size:24px;">#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void myprintf(char *pstar, ...) //...可变参数
va_list ap;//起始点
va_start(ap, pstar);//从ap开始读取pstar
char flag;
while (*pstar)
flag = *pstar;//取出字符
//pstar++;
if (*pstar != '%')
putchar(flag);
pstar++;
else
pstar++;//往前 &d &c &s &&
flag = *pstar;
switch (flag)
case 'd':
int data = va_arg(ap, int);//读取下一个参数按照int
printf("%d", data);//整数转化字符串,挨个显示字符
break;
case 's':
char *str = va_arg(ap, char*);//读取下一个参数按照int
printf("%s", str);//整数转化字符串,挨个显示字符
break;
case 'c':
char ch = va_arg(ap, char);//读取下一个参数按照int
putchar(ch);//整数转化字符串,挨个显示字符
break;
case 'f':
double db= va_arg(ap, double);//读取下一个参数按照int
printf("%f", db);//整数转化字符串,挨个显示字符
break;
case '%':
putchar('%');
break;
default:
break;
pstar++;
va_end(ap);//读取结束
void main()
myprintf("\\n1234abc");
myprintf("\\n1234abc%d",10);
myprintf("\\n1234abc%d%s",10,"wuzhigang");
myprintf("\\n1234abc%d%s%c", 10, "wuzhigang", 'A');
system("pause");
</span>
以上是关于20150502管道字符串的主要内容,如果未能解决你的问题,请参考以下文章