gpt4 book ai didi

c - 从C中的文本文件中读取unicode字符

转载 作者:行者123 更新时间:2023-11-30 20:59:09 26 4
gpt4 key购买 nike

我正在尝试从 .pas 文件中读取 pascal 代码并将其逐行写入控制台。那部分工作正常。现在我想在我正在读取的 .pas 文件中添加土耳其语字符并显示它。我已经包括了

#include <locale.h> 

setlocale(LC_ALL, "土耳其语");

当我编写包含土耳其字符的 Şperator 时,而不是 Operator 程序打印出 Å?perator。我希望它打印出Şperator。有什么问题吗?

Pascal code

这是完整的代码

#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
#include <unistd.h>
#include <wchar.h>



#define FORM_FEED_CHAR '\f'

#define MAX_FILE_NAME_LENGTH 32
#define MAX_SOURCE_LINE_LENGTH 256
#define MAX_PRINT_LINE_LENGTH 120
#define MAX_LINES_PER_PAGE 50
#define DATE_STRING_LENGTH 26

typedef enum {
FALSE, TRUE,
}BOOLEAN;

int line_number = 0;
int page_number = 0;
int level = 0;
int line_count = MAX_LINES_PER_PAGE;

char source_buffer[MAX_SOURCE_LINE_LENGTH];

char source_name[MAX_FILE_NAME_LENGTH];
char date[DATE_STRING_LENGTH];

FILE*source_file;

main(argc, argv)
int argc;
char *argv[];
{
setlocale(LC_ALL, "Turkish");
BOOLEAN get_source_line();

init_lister("C:/Users/Dzenan/Documents/calculator1.pas");
while (get_source_line());
}

init_lister(name)
char *name;
{
time_t timer;
strcpy(source_name, name);
source_file = fopen(source_name, "r");

time(&timer);
strcpy(date, "d");
}

BOOLEAN
get_source_line()
{
char print_buffer[MAX_SOURCE_LINE_LENGTH + 9];
if ((fgets(source_buffer, MAX_SOURCE_LINE_LENGTH,
source_file)) != NULL) {
++line_number;
sprintf(print_buffer, "%4d %d: %s",
line_number, level, source_buffer);
print_line(print_buffer);
return(TRUE);
}
else return(FALSE);
}

print_line(line)
char line[];
{
char save_ch;
char *save_chp = NULL;

if (++line_count > MAX_LINES_PER_PAGE) {
print_page_header();
line_count = 1;
};

if (strlen(line)> MAX_PRINT_LINE_LENGTH)
save_chp = &line[MAX_PRINT_LINE_LENGTH];

if(save_chp){
save_ch = *save_chp;
*save_chp = '\0';
}

printf("%s", line);

if(save_chp) *save_chp = save_ch;

}

print_page_header() {
putchar(FORM_FEED_CHAR);
printf("Page %d %s %s\n\n", ++page_number, source_name, date);
}

最佳答案

这不是您的问题 - 您只需要正确配置终端仿真器 (cmd.exe) 编码即可。 C 字符串没有编码。它们只是字节序列。您的程序准确打印文件中的内容,该文件可能以 UTF-8 编码。

关于c - 从C中的文本文件中读取unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48240618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com