Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 文本文件撇号故障_C - Fatal编程技术网

C 文本文件撇号故障

C 文本文件撇号故障,c,C,我正试图从一个古腾堡项目的文本文件中读取数据,并计算总字数。我现在太过分了,因为带撇号的单词被重复计算。但是,文本文件中的撇号字符与ASCII字符39(即“\”)不匹配,因此my is\u word函数工作不正常。关于那个角色到底是什么有什么建议吗 注意:当我浏览并手动替换vim中的撇号时,单词计数器工作正常 链接到文本文件:这不是一个完整的答案,但如果你这样做了 #include <wchar.h> #include <locale.h> 然后调用getwchar()

我正试图从一个古腾堡项目的文本文件中读取数据,并计算总字数。我现在太过分了,因为带撇号的单词被重复计算。但是,文本文件中的撇号字符与ASCII字符39(即“\”)不匹配,因此my is\u word函数工作不正常。关于那个角色到底是什么有什么建议吗

注意:当我浏览并手动替换vim中的撇号时,单词计数器工作正常


链接到文本文件:

这不是一个完整的答案,但如果你这样做了

#include <wchar.h>
#include <locale.h>
然后调用
getwchar()
getwc(fp)
,而不是
getchar
/
getc
,然后检查值8217以及
'\'
,您可能能够使所有功能正常工作

(它适用于me.YMMV。根据您的操作系统,您可能需要使用除“en_US.UTF-8”之外的区域设置字符串。)


(如果这真的起作用,欢迎来到的奇妙世界。沿着这条路走下去,如果你想让你的代码在所有环境下都能正常工作,那么你还需要注意一些其他问题。)

请展示你的代码。IIRC,在vim中,转到字符并键入“g8”(自从我上次使用vim已经很久了).我怀疑撇号可能表示为Unicode右单引号,U+2019。对于UTF-8文件,它们将显示为三个字节0xe2、0x80、0x99。但是,如果您使用正确的Unicode感知输入方法(
getwchar
?),您应该能够查找值0x2019(8217)。Unicode 2019、UTF8 E280 99沿着这条路走下去,如果您希望代码在所有情况下和所有地区都能正常工作,那么您还必须注意一些其他问题。这是今天的轻描淡写!
setlocale(LC_ALL, "en_US.UTF-8");