我试图找到一个单词的结尾,例如 school,并在单词的结尾加上一个 s。
这是我到目前为止所拥有的:
for (int i = 0; i < 10; i++) {
plural[i] = orig[i];
if (plural[i] == NULL) {
plural[i] = 's';
plural[i + 1] = '\0';
}
}
最佳答案
您的代码可能会使用 orig
中长度小于 10 个字符的字符串,并且 NULL
被定义为 0
。
但请注意,NULL
用于表示空指针,而不是字符串末尾的空字节。 NULL
可以这样定义:
#define NULL ((void*)0)
在这种情况下,您的代码将在编译时生成警告。
在字符串末尾编写 '\0'
来表示空字节被认为是很好的风格。空字符常量具有相同的值,0
,类型为 int
,但为了表示空字节而更加明确。
您应该测试 orig[i]
是否为非 null,而不是迭代到 10
:
char orig[] = "world";
char plural[10];
int i;
for (i = 0; orig[i] != '\0'; i++) {
plural[i] = orig[i];
}
plural[i] = 's';
plural[i + 1] = '\0';
关于检查 C 字符串数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45123533/