gpt4 book ai didi

C - 类型字符串越界

转载 作者:行者123 更新时间:2023-12-02 09:13:59 25 4
gpt4 key购买 nike

我正在尝试解决 CS50 的一些问题集。我需要提取字符串“stra”的前两个字符,然后将它们连接起来并转换为字符串,然后将该字符串与数组中的字符串进行比较。我读过很多,在 C 中没有字符串,只有字符数组,但在 CS50 中它们使用字符串声明类型。当我运行代码时,出现以下错误

运行时错误:索引 4 超出类型“字符串 [4]”的范围

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int main(void){

string stra = "GH7";

int x = 0;
//extract first two chars of stra
char strb[3] = {stra[0], stra[1], '\0'};
//concatenate chars
string strc = strb;

string letters[] = {"AB","CD","ED","GH"};

for (int i = 0, n = sizeof(letters); i < n; i++)
{
if (strc == letters[i]) // <--the error happens here
{
break;
}
else
{
x++;
}
}
printf("%i", x);
}

它给了我这个错误

运行时错误:索引 4 超出类型“字符串 [4]”的范围

最佳答案

问题是初始化

n = sizeof(letters)

sizeof(letters) 应该除以单个元素(指针)的大小:

n = sizeof(letters) / sizeof(*letters)

(除非你确定 letters 指向字符串文字,这是多余的,这是计算文字数组大小的最佳方法,它甚至遵循可能的类型改变)

关于C - 类型字符串越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48918159/

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