我正在尝试创建一个程序,该程序接受用户的输入并打印每个单词的第一个字符,但每次我尝试“这是我的代码”。
#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/