我有一个问题,在循环中构建字符串,将该字符串的输出显示到stdout时,最后一个字符是一个带两个点的字符“y”。
那是什么?
我在这个函数中创建字符串:
char get_string(char *buf, int ble, FILE *fp, char del)
{
int i = 0;
int c;
char result;
memset(buf, 0, BUFLEN);
do {
c = fgetc(fp);
if (c == del) {
buf[i] = '\0';
result = c;
break;
} else if(c == '\n') {
buf[i] = '\0';
result = '\n';
break;
} else {
buf[i] = c;
i++;
}
} while (c != EOF);
return result;
}
然后在另一个函数中使用buf和result如下:
char pair[BUFLEN];
char end;
do {
end = get_string(pair, BUFLEN, fp, ';');
printf("Result: %s\n",pair);
} while (pair != NULL);
上述代码的最后一次迭代输出“Result: y”,我不知道为什么。
U+00FF
的字形,它在UTF-8中对应于字节0xFF
。 - Jesse BederU+00FF
,而0xFF
是指所有位都设置为1(或者只是数字255)的字节。当然,这只是从各种关于Unicode的碎片阅读中获得的知识,我不是专家,所以很高兴被纠正。(例如,维基百科页面仅通过U +stuff引用代码点)。虽然我可能不应该在没有思考一秒钟的情况下提到UTF-8比特 :) - Jesse Beder