⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.c

📁 实现树形结构
💻 C
字号:
// For portability issues, these functions are still written in C

#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#ifndef _WINDOWS
#include <unistd.h>
#endif

/*
 * Tests if a file exists
 */
int file_exists(char* filename)
{
	struct stat st;
	int err = stat(filename, &st);
	return err==0 || errno != ENOENT;
}

/*
 * Returns the file size
 */
size_t file_size(char* filename)
{
	struct stat st;
	int err = stat(filename, &st);
	if( err!=0 )
		return 0xFFFFFFFF;
	else
		return st.st_size;
}

/*
 * Returns read only status of the file
 */
int file_read_only(char* filename)
{
#ifdef _WINDOWS
	struct stat st;
	int err = stat(filename, &st);
	if( err!=0 )
		return 0;
	else
		return (st.st_mode & _S_IWRITE) == 0;
#else
  int err = access(filename, W_OK);
  return err==0 ? 0 : 1;
#endif
}

/*
 * Returns the time of last modification of file
 */
time_t file_last_modification(char* filename)
{
	struct stat st;
	int err = stat(filename, &st);
	if( err!=0 )
		return 0xFFFFFFFF;
	else
		return st.st_mtime;
}

/*
 * Put a string to stderr
 */
void fputs_stderr(char* s)
{
	fputs(s, stderr);
}

/*
 * Returns the path separator
 */
/*char path_separator()
{
#ifdef _WINDOWS
  return '\\';
#else
  return '/';
#endif
}*/

/*
 * Convert a filename with '/' to a platform compatible filename
 */
/*void convert_full_name (char* filename)
{
#ifdef _WINDOWS
  char* p = filename;
  char c;
  while (1)
  {
    c = *p;
    if (c==0) break;
    if (c=='/') *p = '\\';
    ++p;
  }
#endif
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -