gpt4 book ai didi

CS50 pset2,获取姓名首字母

转载 作者:行者123 更新时间:2023-11-30 17:08:57 25 4
gpt4 key购买 nike

我在下面的代码中遇到段错误。

char name[30];
char initials[10];
int i=0, j=0;
int size;

printf("Getting name: ");
name = Getstring();
size = strlen(name);

while(i < size)
{
if(i == 0)
{
initials[j] = toupper(name[i]);
j++;
}
else
{
if(name[i - 1] == ' ')
{
initials[j] = toupper(name[i]);
j++;
}
}
i++;
}
initials[j] = '\0';
printf("%s",initials);
}
}

当我调试它时(通过cs50设备中的gdb),我发现了这个语句的错误: 首字母[j] = toupper(name[i]);

这里有什么想法吗?请帮忙..:(

最佳答案

您的代码中至少存在 2 个问题:

  1. name分配:name = Getstring();
    name是一个 char array,你不能像使用例如那样为它分配一个值一个int 。您应该使用类似 strcpy() 的内容将新字符串复制到其中。这样,name将保存一个有意义的字符串,您可以在其上使用 strlen() ,
  2. 字符分配:initials[j] = toupper(name[i]);
    我知道你假设 name不能超过10 (因此, j 可能始终是 < 10 。但是,您应该始终考虑极端情况,以保护您的程序免受(邪恶)用户输入的影响。尝试在循环中使用此条件: while(i < size && j < 10)

关于CS50 pset2,获取姓名首字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461787/

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