我正在制作一个短程序,给我一个名字的首字母,所以如果名字是 john smith,它会给我 JS。
我写的代码是:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
string name = "String Name Goes here"
for (int i = 0, n = strlen(name); i < n; i++)
{
printf("%c", toupper(name[i]));
while(name[i] != ' ')
{
i++;
}
}
printf("\n");
}
所以因为我只是使用了一个通用的字符串名称,所以我应该得到的结果是 SNGH。问题是,代码有时可以工作,有时我会遇到分段错误。它总是在字符串中有大写字母时出现,但是当字符串中没有大写字母时,有时它会输出我想要的。我知道这与访问我不允许访问的内存有关,但我不明白这在这里如何应用,因为我只访问 i 计数器。
为什么会发生这种情况?
*编辑:我使用'string'的原因是因为我正在访问一个不同的库,我没有在此处列出它定义了一个获取字符串的函数。所以我可以得到字符串,我只是用我之前的代码替换了代码。那不是导致问题的部分。