我是来自Java的C新手。请解释一下为什么:
text[0] = 'a';

是不可能的,我的程序崩溃了。
#include "caesarHead.h"
#include <limits.h>
int main(void) {
caesar("Hello this is a sample text", 12);
printf("\n\n");
}
void caesar(char text[], char offset) {
int i = 0;
text[0] = 'a';
char *p = text;
for (p; *p != '\0'; p++) {
printf("String: %c \n", text[i]);
printf("Ascii: %i \n", (int)text[i]);
i++;
}
}
&#13;
答案 0 :(得分:1)
您无法修改字符串文字。事实上,您可以尝试,但这是未定义的行为,它可能会也可能不会。
相反,首先将字符串放入变量然后使用它。在这种情况下,在调用vector
时将字符串初始化,并将其放在堆栈上,因此您可以稍后对其进行修改。
main
字符串文字必须用作不可修改的字符串。在尝试修改此类字符串时,我们有未定义的行为。