c - 我正在尝试创建一个程序,该程序接受名称并输出缩写,但不断遇到数组错误

标签 c arrays cs50

我正在尝试创建一个程序,该程序接受用户的输入并打印每个单词的第一个字符,但每次我尝试“这是我的代码”。

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

int main(void)
{
    char leng[100];
    int len;
    scanf("%s", &leng[100]);
    len = strlen(&leng[100]);
    char name[len];
    //checking if at end or not
    while (name[len] != '\0')
    {
        if (name[len] == ' ')
            printf("%c", name[len + 1]);
        len++;
    }
}

每次我给出一个名字时,它都会显示一个错误,如下所示:

index 3 out of bounds for type 'char [len]'

最佳答案

这两行不正确:

scanf("%s", &leng[100]);
len = strlen(&leng[100]);

如果你把它们翻译成英文,它们的书面含义是:

  • 扫描一个字符串到内存中第101个元素的地址 冷阵。
  • 获取从该地址开始的字符串的长度 leng 数组的第 101 个元素。

数组索引越界,因为 leng[100] 超出了数组末尾。请记住,100 个元素的数组是从 0 到 99,而不是从 1 到 100!

您想要扫描数组的基地址,并将数组的基地址传递给 strlen()。我将把语法留给你从课本中找出来。

顺便说一句,您的代码中也存在问题,因为您正在将数据读入名为 leng 的数组,但您的循环正在使用名为 len 的数组。您的代码中至少还有两个其他问题,但我会将它们留给您进行调试。

关于c - 我正在尝试创建一个程序,该程序接受名称并输出缩写,但不断遇到数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39885384/

相关文章:

C:将 double 向下舍入为 int 的更好方法

c - 初始化包含数组的结构

c - 从用户输入读取数组的函数产生垃圾值

c - 在哈希表上工作时出现段错误

c - 结构的不完整类型错误

c - C 中的多维数组

c - 有没有办法测试C标准库中是否有线程安全函数?

arrays - 带有 int 数组参数的 EF ExecuteSqlCommand

C 分段故障函数引用

c - 如何处理int中的特定数字