【发布时间】:2018-06-13 18:36:15
【问题描述】:
我需要比较字符串是否等于以下扩展字符序列:文本文件中的“———”(ALT + 0151 代码重复三遍)。如何用函数 strcmp() 做到这一点?
示例文本文件 (TSV) 的一段:
皮拉西卡巴大道Armando Salles de Oliveira Lado par 13400-005 Centro 皮拉西卡巴电视。 Agostinho Frasson ——— 13400-008 Centro 皮拉西卡巴大道Armando Salles de Oliveira Lado 位于 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;
}
非常感谢。
【问题讨论】:
-
你为什么将
NULL指针传递给strcpy? -
如果你想在字符串中设置一个空值,使用
strcpy(registro[i].trecho, "");- 使用NULL会导致崩溃。 -
@tadman。对不起。如果值等于“———”我想将“NULL”分配给结构字段,但两者(NULL 或“”)都会使程序崩溃。有什么想法吗?
-
@pelya。我已经尝试过(NULL 或“”)以及任何字符串和程序崩溃。有什么想法吗?
-
您看到ù 而不是– 的原因是因为您的终端的编码设置与源文件的编码不同。这可能是 Windows-1252 与 ISO-8859-1 编码不兼容。