1、 Shell程序,只能用Shell所学知识,不准使用sed/awk等工具:

qq_31303507 2016-12-18 11:20:09
统计所指定的目录下,不同文件类型的个数,例如.txt的文件数是5,.c的文件数是0等等。这个目录由用户指定,而非程序员。当用户没有输入目录时,则显示当前目录中各个文件类型的个数。

2、 系统编程部分,本部分要求采用C语言在Linux系统下运行。
编写程序实现客户端与服务器端的通信功能。服务器端能够支持同时与多个客户端的通信。客户端与服务器相连接后,自动向服务器随机发送一串数字,服务器将该字符串倒序之后再返回给客户端显示。
...全文
354 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
常书 2016-12-20
  • 打赏
  • 举报
回复
引用 3 楼 qq_31303507 的回复:
大神,可以把第二道题弄出来吗? 系统编程部分,本部分要求采用C语言在Linux系统下运行。 编写程序实现客户端与服务器端的通信功能。服务器端能够支持同时与多个客户端的通信。客户端与服务器相连接后,自动向服务器随机发送一串数字,服务器将该字符串倒序之后再返回给客户端显示。
这个题你问百度就好了
qq_31303507 2016-12-19
  • 打赏
  • 举报
回复
大神,可以把第二道题弄出来吗? 系统编程部分,本部分要求采用C语言在Linux系统下运行。 编写程序实现客户端与服务器端的通信功能。服务器端能够支持同时与多个客户端的通信。客户端与服务器相连接后,自动向服务器随机发送一串数字,服务器将该字符串倒序之后再返回给客户端显示。
常书 2016-12-19
  • 打赏
  • 举报
回复
效率不高,不带后缀用other表示,最好不要计算超过20个文件

#!/bin/bash

if [ $# -lt 1 ];then
	echo "calculate current dir"
else
	dir=$1 
	echo "calculate $1"
	cd $dir

	if [ $? -ne 0 ];then
		exit 0
	fi
fi

function findtype
{
	local ch=1
	local str=""
	local ft_str="$1"
  ret=""

 # echo "calculate $1"

	while ( [ "$str" != "$ft_str" ] && [ "$ret" = "" ] )
	do
		str=`echo $ft_str|tail -c$ch`
		#echo "check $str   ch=$ch"
		ret=`echo $str|grep '\.?*'`
		ch=`expr $ch + 1`
	done

	#echo "get $ret"
}

strs=`ls`

if [ "$strs" = "" ];then
	echo "empty"
	exit 0
fi

filenum=0
#echo "presort:"

for name in $strs
do
	#echo "$name"
	farr[$filenum]="$name"
	filenum=`expr $filenum + 1`
done

#sort file by type
i=0
filestop=`expr $filenum - 1`
echo "filenum:$filenum"

while [ $i -lt $filestop ]
do
	j=`expr $i + 1`
	while [ $j -lt $filenum ]
	do
		findtype ${farr[$i]}
		cmpstr=$ret
		findtype ${farr[$j]}

		#echo "cmp $ret $cmpstr"
		
	    if [[ "$ret" < "$cmpstr" ]];then
	    	tmp=${farr[$i]}
	    	farr[$i]=${farr[$j]}
	    	farr[$j]=$tmp
	    fi
	    
		j=`expr $j + 1`
	done
	i=`expr $i + 1`
done
#end sort

#printsort
#echo "after sort:"
#for (( i = 0 ; i < filenum ; i++))
#do
#    echo ${farr[$i]}
#done
#end print

typenum=0
first=0


for (( i = 0 ; i < filenum ; i++))
do
	findtype ${farr[$i]}

	if [ $first -eq 0 ];then
		pretype=$ret
		first=`expr $first + 1`
		typenum=1
	elif [ "$ret" = "$pretype" ];then
		typenum=`expr $typenum + 1`
	elif ([ "$pretype" = "" ]);then
		echo "get other count:$typenum"
    typenum=1
		pretype=$ret
	else
		echo "get $pretype count:$typenum"
		typenum=1
		pretype=$ret
	fi
done


if [ "$ret" = "$pretype" ];then
  if [ "$ret" = "" ];then
		echo "get dir count:$typenum"
	else
	  echo "get $ret count:$typenum"
	fi
fi
uid123 2016-12-18
  • 打赏
  • 举报
回复
不会linux下怎么办,在Windows下是有一个comdlg32.dll的动态链接库,在system32下面,调用这个动态链接库,就可以获得这个文件名的句柄,里面有很多包括文件名长度,类型,存储位置等的东西,经过连续统计计算就行了。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧