天道酬勤,学无止境

file

C snprintf specify user home directory

问题 snprintf(filename, sizeof(filename), "%s_%s.sho", client, id); 回答1 用户控制他的环境 - 因此HOME环境变量可能不正确,甚至可能没有设置。 使用 getuid() 和 getpwuid() 获取系统指定的用户主目录: #include <unistd.h> #include <pwd.h> struct passwd *pwd = getpwuid( getuid() ); /* need to duplicate the string - we don't know what pw_dir points to */ const char *homeDir = strdup( pwd->pw_dir ); 错误检查留作练习...... 回答2 在 Linux 和 POSIX 系统上,主目录通常来自HOME环境变量。 所以你可能会编码 snprintf(filename, sizeof(filename), "%s/%s_%s.sho", getenv("HOME"), client, id); 迂腐地 getenv(3) 可能会失败(或错误)。 但这种情况很少发生。 请参见环境 (7)。 (您可以检查或使用 getpwuid(3) 和 getuid(2)...) 使用 setuid 可执行文件

2022-05-16 18:29:12    分类:技术分享    c   file   printf   home-directory

C - given a case-insensitive file path, how to check whether the file exists or not?

问题 回答1 如果您正在运行 Windows 或任何不区分大小写的文件系统,那么除了检查一个大小写之外别无他法。 如果"Hello.txt"存在,则"hEllo.txt"存在(并且是同一个文件)(这里的难题是当您要确保文件在文件系统中使用给定大小写拼写时) 如果您正在运行区分大小写的文件系统,只需获取当前文件的目录名,列出文件内容,并将条目与当前文件名进行比较,忽略大小写。 回答2 看看 fcaseopen,它演示了如何处理不区分大小写的文件操作。 本质上,要使用的 C 头文件/函数是: 在dirent.h中,使用opendir / readdir / closedir目录中的文件从string.h ,使用strcasecmp比较两个文件名,忽略字符的大小写

2022-05-16 17:11:04    分类:技术分享    c   file   io   case-insensitive

deleting multiple characters from text file using C

问题 #include <stdio.h> #include <stdlib.h> int main() { int j = 0, i; char getText[1000] = "Lorem Ipsum is simply dummy text of the printing and typesetting industry"; FILE * fptr, * fp2; char a[1000], temp[1000]; char key[50] = "Ipsum", textDelete_2[50] = "printing"; fptr = fopen("D:\\test.txt", "w"); if (fptr == NULL) { printf("File can not be opened. \n"); exit(0); } fputs(getText, fptr); fp2 = fopen("D:\\temp.txt", "w"); if (fp2 == NULL) { printf("File fp2 can not be opened. \n"); exit(0); } printf("\n processing ... \n"); while (fgets(a,1000,fptr)) { for (i = 0; a[i] != '\0'; ++i) { if (a

2022-05-16 16:47:09    分类:技术分享    c   string   file

How to save to an INI file delphi

问题 我有按钮,单击时将其标题存储在 TStringList ChairList : TStringList; procedure TForm1.FormCreate(Sender: TObject); begin ChairList := TStringList.Create; end; 一个按钮的示例是: procedure TForm1.Table17Click(Sender: TObject); begin Label1.Visible := false; if (BottomPanel.Visible = false) then begin Label1.Visible := true; LastClicked := 'Table 17'; ChairList.Add(LastClicked); 但是当我阅读文件时,我没有得到任何结果。 我使用ShowMessage对其进行了测试,只是为了查看是否会读取任何内容,而我只是得到一个空白的ShowMessage 以下代码是保存过程: Procedure TForm1.SaveToFile(Const Filename : String); Var INI : TMemIniFile; Procedure SaveReserve(); var section : String; Begin Section := 'Table'

2022-05-16 10:57:04    分类:技术分享    file   delphi   save   ini

How to read the n last lines of a file?

问题 我必须阅读文件的最后 4 行。 我尝试了以下方法: top_tb_comp_file = open('../../ver/sim/top_tb_compile.tcl', 'r+') top_tb_comp_end = top_tb_comp_file.readlines()[:-4] top_tb_comp_file.close() 没用(我在top_tb_comp_end中得到文件的第一行)。 回答1 #! /usr/bin/env python3 import collections def main(): with open('names.txt') as file: lines = collections.deque(file, 4) print(*lines, sep='') if __name__ == '__main__': main() 回答2 你的索引是错误的。 使用[:-4] ,您要求的与您实际想要的完全相反。 尝试以下操作: top_tb_comp_file = open('../../ver/sim/top_tb_compile.tcl', 'r+') top_tb_comp_end = top_tb_comp_file.readlines()[-4:] # you noticed that the '-4' is now before the '

2022-05-16 10:37:03    分类:技术分享    python   python-3.x   file

Golang, a proper way to rewind file pointer

问题 package main import ( "bufio" "encoding/csv" "fmt" "io" "log" "os" ) func main() { data, err := os.Open("cc.csv") defer data.Close() if err != nil { log.Fatal(err) } s := bufio.NewScanner(data) for s.Scan() { fmt.Println(s.Text()) if err := s.Err(); err != nil { panic(err) } } // Is it a proper way? data.Seek(0, 0) r := csv.NewReader(data) for { if record, err := r.Read(); err == io.EOF { break } else if err != nil { log.Fatal(err) } else { fmt.Println(record) } } } 我在这里使用两个阅读器来读取 csv 文件。 要倒带我使用data.Seek(0, 0)的文件,这是一个好方法吗? 或者最好在第二次阅读之前关闭文件并再次打开。 使用*File作为io.Reader是否也正确? 或者最好做r := ioutil

2022-05-16 03:24:18    分类:技术分享    file   go   io

Read from file and find specific lines

问题 我需要根据某些关键字在设置文件中获取信息(我无法更改格式)。 该文件是这样的: username=myusername address=156a1355e3486f4 data=function(i){if (i!=0) return true; else return false;} 系统是<key> = <value> \n 。 值部分可以有= 、空格或其他字符,但不能有换行符。 键是唯一的(在“键部分”中,它们可以出现在值中,但\nkey=每个键在文件中只出现一次)。 使用 shell 脚本,我发现我的价值观是这样的: username=`grep ^username file.txt | sed "s/^username=//"` Grep 将返回username=someusername和 sed 替换键和=什么都没有,只留下值。 在 node.js 中,我想访问文件中的一些数据。 例如,我想要地址和数据的值。 我怎么能在 node.js 中做到这一点? 在fs.readFile(file.txt)之后我不知道该怎么做。 我想我将不得不使用split ,但使用\n似乎不是最好的选择,也许正则表达式可以帮助? 理想的做法是“找到一个以\nkey=开头并以第一个\n结尾的子字符串”,然后我可以轻松拆分以找到该值。 回答1 // @text is the text

2022-05-15 21:45:47    分类:技术分享    javascript   node.js   file   split

Write to a file until it reaches a certain size

问题 我正在为站点地图编写一个 XML 文件,Google 说该文件不能大于 10MB。 我想知道是否有办法写入文件直到满足特定文件大小,然后关闭它并打开一个新文件。 我有它,一旦它达到一定数量的条目,它将关闭文件并打开一个新文件。 我正在使用 Number::Bytes::Human 来尝试获取文件大小,但没有运气。 回答1 您可以在文件句柄上使用tell方法来确定将写入下一个数据的偏移量。 该方法由 IO::Seekable 提供,它是 IO::File 的子类。 由于 Perl 的 v5.14, IO::File是按需自动加载的,所以不需要显式use它 这是一个写入文件直到超过 10MB 的示例程序 use strict; use warnings 'all'; use autodie; use feature 'say'; open my $fh, '>', '10MB.txt'; say $fh->tell; print $fh '1234567890' while $fh->tell < 10 * 1024 * 1024; say $fh->tell; close $fh; 输出 0 10485760 请注意,您必须小心地在 XML 数据传输后正确地重新组合它,因为 XML 文档必须只包含一个根元素

2022-05-15 19:58:03    分类:技术分享    perl   file

Edit and/or Delete a row on CSV file

问题 我有一个 CSV 文件。 我需要编写一个代码,我们可以通过用户名从 CSV 中获取一行。 我需要从 CSV 文件中更新或删除该行。 我设法通过用户名获取行数据。 但我不知道如何编写更新或删除功能的代码。 我获取单行的代码如下 StreamReader reader = new StreamReader(System.IO.File.OpenRead(@"C:\Test\test.CSV")); UserDetailsViewModel objInput = new UserDetailsViewModel(); while (!reader.EndOfStream) { string line = reader.ReadLine(); if (!String.IsNullOrWhiteSpace(line)) { string[] values = line.Split(','); if (values[0] == "Bharat") { objInput.FirstName = values[0]; objInput.LastName = values[1]; objInput.Address1 = values[2]; objInput.Address2 = values[3]; objInput.City = values[4]; objInput.State =

2022-05-15 19:09:03    分类:技术分享    c#   asp.net   asp.net-mvc   file   csv

Reading csv file and returning as dictionary

问题 我编写了一个当前可以正确读取文件的函数,但存在一些问题。 它需要作为字典返回,其中键是艺术家姓名,值是元组列表(对此不确定,但这似乎是它的要求) 我遇到的主要问题是我需要以某种方式跳过文件的第一行,我不确定我是否将它作为字典返回。 以下是其中一个文件的示例: "Artist","Title","Year","Total Height","Total Width","Media","Country" "Pablo Picasso","Guernica","1937","349.0","776.0","oil paint","Spain" "Vincent van Gogh","Cafe Terrace at Night","1888","81.0","65.5","oil paint","Netherlands" "Leonardo da Vinci","Mona Lisa","1503","76.8","53.0","oil paint","France" "Vincent van Gogh","Self-Portrait with Bandaged Ear","1889","51.0","45.0","oil paint","USA" "Leonardo da Vinci","Portrait of Isabella d'Este","1499","63.0","46.0"

2022-05-15 12:29:04    分类:技术分享    python   file   python-3.x   csv   dictionary