另一个问题是。Unicode,终端,现在是C#和wc。如果我写这段简单的代码
int i=0;
foreach(char c in Console.In.ReadToEnd())
{
if(c!='\n') i++;
}
Console.WriteLine("{0}", i);
并且只输入字符“returns”(utf-8中的3个字节),wc返回3个字符(可能使用wint_t,但我没有检查过),但ReadToEnd()返回1(一个字符)。在这种情况下,ReadToEnd的行为到底是什么?我如何知道ReadToEnd在幕后做了什么?
我
该程序在Linux中运行正常,但在Windows或通过Wine运行时,我在文件末尾之后会得到额外的字符。不是垃圾,而是已经写好的重复文本。无论我写到stdout还是一个文件,这个问题都仍然存在,但对于小文件就不会出现这个问题,需要几百KB。
我确定了这个函数的问题:
static unsigned long read_file(const char *filename, const char **output)
{
struct stat file_stats;
int fdescriptor;
unsigned long
我知道也有人问过类似的问题。然而,我仍然不能解决我的问题。所以如果你能帮我理解我做错了什么,我会非常感激。我的程序基本上是从文件中读取单词,并将它们作为键/值对放在散列表中。然后,它将来自另一个文件的单词与HT中的单词进行比较,如果找到,它将返回值.
char *str_dup(const char *s) {
if (s == NULL) { // Optional test, s should point to a string
return NULL;
}
size_t siz = strlen(s) + 1;
ch