我这里正好有一个类似的程序,改了一下,看看能否满足需要吧
//file: read_write_fifo.c#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
int main(int argc,char **argv)
{
int fd
int len = 0
char read_buf[1024]
char write_buf[1024]
pid_t pid
int status = 0
if(mkfifo("fifo1", 0666) < 0 && errno!=EEXIST) // 创建FIFO管道
perror("Create FIFO Failed")
if((pid = fork()) < 0) // 创建子进程
perror("Fork error\n")
else if (pid == 0)
{
if((fd = open("fifo1", O_WRONLY)) < 0) // 以写打开一个FIFO
{
perror("Open FIFO Failed")
exit(1)
}
while(1)
{
printf("Child send:")
scanf("%s",write_buf)
if(!strcmp(write_buf,"quit"))
{
close(fd)
exit(0)
}
if(write(fd, write_buf, 1024) < 0) // 写入到FIFO中
{
perror("Write FIFO Failed")
close(fd)
exit(1)
}
usleep(100)
}
}
if((fd = open("fifo1", O_RDONLY)) < 0) // 以读打开FIFO
{
perror("Open FIFO Failed")
exit(1)
}
while(waitpid(pid, &status, WNOHANG) == 0)
{
len = read(fd, read_buf, 1024) // 读取FIFO管道
if(len > 0)
printf("Father recv: %s\n", read_buf)
}
close(fd) // 关闭FIFO文件
return 0
}
1.#include<stdio.h>#include<string.h>
#include<malloc.h>
main()
{ char *s,*h,*tint l
s=(char*)malloc(20*sizeof(char))
printf("input a string:")
scanf("%s",s)
l=strlen(s)/*求字符串长度赋给l*/
h=st=s+l-1/*h指针指向第一个字符,t指向最后一个*/
for(h<th++,t--) /*从头尾向中比较*/
{if((*h)!=(*t)){printf("not symmetric")break} /*发现不同的字符,显示不对称,并结束比较*/
}if(h>=t)printf("symmetric")/*如果比较完了,则显示对称*/
getch()
}
2.#include<stdio.h>
#include<string.h>
#include<malloc.h>
main()
{ char *s,*p,*q
s=(char*)malloc(20*sizeof(char))
printf("input string:")
scanf("%s",s)
p=s
while(*p)
{if(*p=='a'||*p=='e'||*p=='i'||*p=='o'
||*p=='u')
{q=p/*让q指针和q指针指向同一个字符*/
while(*q)
{*q=*(q+1)q++} /*将当前字符后面的字符前移,相当于把p指着的当前字符删除*/
p--}
p++}
printf("%s",s)
getch()
}
3.#include<stdio.h>
#include<string.h>
main()
{ int a,i=0,s=0char b[52],c[100],t
for(t='A't<='Z't++)
b[i++]=t
for(t='a't<='z't++)
b[i++]=t
for(i=0i<52i++)
printf("%c",b[i])/*将52个大小写字母存入数组b中*/
srand(time(NULL))/*使每次随机产生的数不同*/
for(i=0i<100i++) /*循环100次,产生100个随机字母*/
{ a=rand()%51/*每次从0到51中产生一个随机数,从而从b〔0〕到b〔51〕中选出一个字母*/
c[i]=b[a]/*每次产生的随机字母存入数组c中*/
if(b[a]=='a'||b[a]=='e'||b[a]=='i'||
b[a]=='o'||b[a]=='u'||b[a]=='A'||
b[a]=='E'||b[a]=='I'||b[a]=='O'||b[a]
=='U')s++/*当是元音字母时,用s来统计个数*/
}
printf("\n")
for(i=0i<100i++)printf("%c ",c[i])
printf("\ns:%d",s)
getch()
}
先占下楼层,空了慢慢给你做!先做第一题1月12日:
#!/bin/bash
echo this "date" :`date`
echo this "cal" :`cal`
echo this "pwd" :`pwd`
echo this "ls" : `ls`.
第二题1月12日:
这个没法写了撒 太笼统;建议翻翻书。
我列个环境变量的例子吧:
#!/bin/bash
echo "第二题":
TEST_DIR=/root
export $TEST_DIR
echo "环境变量TEST_DIR是/root".
第三题1月12日:
#!/bin/bash
echo "第三题for":
echo "3.1 for"
x=0
for ((i=1 i<101 i++))
do
x=$(($x+$i))
done
echo $x
echo "---------------------------------"
echo "第三题while":
echo "3.2 while"
x=0
i=1
while [ $i -lt 101 ]
do
i=$(($i+1))
x=$(($x+$i))
done
echo $x
第三题第二个
#!/bin/bash
echo "3.2"
function fib {
if [ $1 -lt 2 ]then
echo -n $1
else
local n_2=$(($1 - 2))
local n_1=$(($1 - 1))
local f_n_2=$(fib $n_2)
local f_n_1=$(fib $n_1)
local f_n=$((f_n_2 + f_n_1))
echo -n $f_n
fi
}
n=10
for ((i = 0i <$ni++))
do
printf "fib(%2d) = %d\n" $i $(fib $i)
done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)