C - 如何使用函数 strcmp() 比较扩展字符序列?

标签 c char strcmp

我需要比较字符串是否等于文本文件中的以下扩展字符序列:“———”(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/

相关文章:

c - 如何搜索某个单词在文本文件中出现的次数

c - 如何使用 scanf() 保存包含多个单词的字符串

c - 如何将 3D 字符数组传递给函数

c - 将 char[] 转换为数组的函数未返回正确的值

c - 检测 C 中的空标记

c - 与不相等的字符串比较时,strcmp() 返回 0

c - 如何将 uint16_t 值分配给 uint8_t 数组?

c - 如何在c中显示次正规数?

c - 努力编写一个简单的计算器

c - 如何在 main 下调用另一个函数 (VC++ C)