当我尝试访问字符串的特定元素时,我遇到了我认为是段错误的问题。具体来说,我试图确定“经度”末尾的字母并检查它是否为“W”。但是,我什至在到达 strcmp 部分之前就崩溃了。 这是代码:
int main{
int Val;
char longitude[20] = "081-28-23.2590W";
char direction = longitude[14]; //pretty sure it's crashing on this line
printf("%s\n", direction); //this does not print
Val = strcmp(direction, "W"); //And I think this is right, but not sure
if(Val==0)
{ DO STUFF;}
else{DO MORE STUFF}
}
此外,我什至不确定 strcmp 部分是否正确,因为程序在到达那里之前就崩溃了。我做错了什么?
最佳答案
printf("%s\n", direction);
是问题。
direction
是单个字符,而 %s
告诉 printf
期望一个以 0 结尾的字符串。
此外,标准命名约定是 val
而不是 Val
,也许更像 isEast
(因为 strcmp
为“W”返回 0/false)。
我假设您得到了正确的 main() { ... }
- 您的问题有误。您应该只剪切并粘贴真实代码,这样人们就不会转移注意力。
正如@Kaylum 指出的那样,我在 strcmp
中错过了同样的问题,它比较的是 2 个字符串,而不是一个字符和一个字符串。在这种情况下,您可以只说 isWest = (direction == 'W');
而不是使用 strcmp
。
为了完整起见,您可以说 char *direction = &longitude[14];
现在 direction
是一个以 0 结尾的字符串并且所以 printf 和 strcmp 工作。我认为这不是一个好的解决方案...
关于c - 在字符串中定位一个元素并在 C 中比较它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531254/