c语言Ins_Tree(p,b)什么意思?

Python08

c语言Ins_Tree(p,b)什么意思?,第1张

应该是一个自定义函数的调用;还应该有个与之对应的自定义函数;

Ins_Tree(p,b)//p,c是实参;

主函数外应该有一个类似于下面的自定义函数;

int Ins_Tree((int)p,(int)b)//int是函数类型(也可以是其他类型),Ins_Tree函数名,p和b也有数据类型

{..........}

如果你用 Linux 或 Unix,有现成的 tr 程序可以用,如 cat a.txt | tr p b,

处理所有文件的脚本如下 :

#!/bin/sh

for i in *.txt

do

mv $i $i.bak &&cat $i.bak | tr p b >$i

done

对应的C程序:

#include <stdio.h>

#include <stdlib.h>

/* 将 buffer 中的 p 替换成 b */

char* replace(char* buffer, size_t length)

{

size_t i

if (buffer != NULL)

for (i = 0i <length++i)

if (buffer[i] == 'p')

buffer[i] = 'b'

return buffer

}

/* 替换一个文件 */

void process_file(const char* filename)

{

FILE* fsrc

FILE* fdest

char filename_backup[1024]

char buffer[4096]

size_t buffer_size = 4096

// 将原文件重命名为 filename.bak

sprintf(filename_backup, "%s.bak", filename)

rename(filename, filename_backup)

if ((fdest = fopen(filename, "wb")) == NULL)

{

printf("Open file %s failed\n", filename)

rename(filename_backup, filename)

return

}

fsrc = fopen(filename_backup, "rb")

if (fsrc == NULL)

{

printf("Open file %s failed\n", filename_backup)

fclose(fdest)

rename(filename_backup, filename)

return

}

while (!feof(fsrc))

{

size_t bytes_read = fread(buffer, 1, buffer_size, fsrc)

fwrite(replace(buffer, bytes_read), 1, bytes_read, fdest)

}

fclose(fsrc)

fclose(fdest)

}

int main(int argc, char* argv[])

{

int i

if (argc <2)

{

printf("Usage: %s filename1 [filename2 ..].\n", argv[0])

return -1

}

for (i = 1i <argci++)

process_file(argv[i])

return 0

}

这个涉及到C语言里运算优先级的问题,小括号是第二级运算,所以先算小括号里的,但是自增++是第14级运算,而*是一级运算,所以先算*运算,在++,而++p和p++不一样,++p是先增加一,后运算,p++是先用p运算,再自增!