当我从键盘获取字符串时,程序按预期工作,我可以更新字符串的内容:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *cards;
cards = malloc(256);
fgets(cards, 256, stdin);
char a_card = cards[2];
cards[2] = cards[1];
cards[1] = cards[0];
cards[0] = cards[2];
cards[2] = cards[1];
cards[1] = a_card;
puts(cards);
return 0;
}
但是当我设置一个字符串文字的char指针时,程序崩溃了。我删除了行x到行y然后程序工作。我知道char指针无法更新。但是为什么它可以在从键盘读取时更新?
int main()
{
char *cards;
cards = malloc(256);
cards = "JQK";
char a_card = cards[2];
cards[2] = cards[1]; // line x
cards[1] = cards[0];
cards[0] = cards[2];
cards[2] = cards[1];
cards[1] = a_card; // line y
puts(cards);
return 0;
}
期待帮助。谢谢你提前。