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管道字符串的主要内容,如果未能解决你的问题,请参考以下文章

std::getline 卡在管道输入的末尾

Shell 特殊符号

匹配正则表达式中的 Unicode 字符

四十进程间通信——管道的分类与读写

让 cppcheck 与管道一起正常工作

C从管道中读取所有数据