我需要比较字符串是否等于文本文件中的以下扩展字符序列:“———”(ALT + 0151代码重复三次)。如何使用函数 strcmp() 来做到这一点?
一段示例文本文件 (TSV):
皮拉西卡巴大道。 Armando Salles de Oliveira Lado par 13400-005 Centro 皮拉西卡巴电视台阿戈斯蒂尼奥·弗拉松 ——— 13400-008 Centro 皮拉西卡巴大道Armando Salles de Oliveira Lado ímpar 13400-010 Centro
当我读取文件并打印时,该字段在监视器上显示“ùùù”。
结构:
typedef struct {
char cidade[50];
char tipoLogradouro[20];
char logradouro[50];
char trecho[30];
char cep[10];
char bairro[50];
} Endereco;
测试在“switch case”内,程序在这部分崩溃:
case 3:
{
if(strcmp(token, "———") == 0) // Change to "ùùù" and fails too.
strcpy(registro[i].trecho, NULL);
else
strcpy(registro[i].trecho, token);
break;
}
非常感谢。
最佳答案
通常在 C 中,您只能在带引号的字符串中使用 7 位 ASCII,因此对于高位 ASCII,您需要使用\x 转义序列和字符的十六进制代码。因此,在您的情况下,您可以输入:“\x97\x97\x97”,因为 97 是十进制 151 的十六进制。
case 3:
{
if(strcmp(token, "\x97\x97\x97") == 0)
strcpy(registro[i].trecho, NULL);
else
strcpy(registro[i].trecho, token);
break;
}
关于C - 如何使用函数 strcmp() 比较扩展字符序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50844066/