Dear mọi người,
Hiện mình đang tự học lập trình C, mình đang làm bài tập ví dụ về mảng ký tự:
Code như sau:
#include <stdio.h>
#include <string.h>
main()
{
char Kid1[12];
char Kid2[] = "Maddie";
char Kid3[7] = "Andrew";
char Hero1[] = "Batman";
char Hero2[34] = "Spiderman";
char Hero3[25];
Kid1[0] = 'K';
Kid1[1] = 'a';
Kid1[2] = 't';
Kid1[3] = 'i';
Kid1[4] = 'e';
Kid1[5] = '\0';
strcpy(Hero3, "The Incredible Hulk");
printf("%s\'s favorite hero is %s.\n", Kid1, Hero1);
printf("%s\'s favorite hero is %s.\n", Kid2, Hero2);
printf("%s\'s favorite hero is %s.\n", Kid3, Hero3);
return 0;
}
Output:
Katie’s favorite hero is Batman.
Maddie’s favorite hero is Spiderman.
Andrew’s favorite hero is The Incredible Hulk.
Sau đó mình thử modify lại Hero3[25] thành Hero3[3] để mảng Hero3 bị thiếu độ lớn so với chuỗi The Incredible Hulk.
Code:
#include <stdio.h>
#include <string.h>
main()
{
char Kid1[12];
char Kid2[] = "Maddie";
char Kid3[7] = "Andrew";
char Hero1[] = "Batman";
char Hero2[34] = "Spiderman";
char Hero3[3];
Kid1[0] = 'K';
Kid1[1] = 'a';
Kid1[2] = 't';
Kid1[3] = 'i';
Kid1[4] = 'e';
Kid1[5] = '\0';
strcpy(Hero3, "The Incredible Hulk");
printf("%s\'s favorite hero is %s.\n", Kid1, Hero1);
printf("%s\'s favorite hero is %s.\n", Kid2, Hero2);
printf("%s\'s favorite hero is %s.\n", Kid3, Hero3);
return 0;
}
Output:
Katie’s favorite hero is Batman.
Maddie’s favorite hero is Incredible Hulk.
Andrew’s favorite hero is The Incredible Hulk.
Ở đây mình thắc mắc là tại sao chuỗi “The Incredible Hulk” có độ lớn hơn độ lớn cho phép của Hero3[3] lại làm ảnh hưởng đến giá trị của chuỗi Hero2[34] vốn có giá trị là “Spiderman”.
Hero2[34] lại mang giá trị hiện tại là “Incredible Hulk”, mất 3 ký tự đầu ứng với độ lớn của chuỗi Hero3[3]. Trong khi hiện giờ chuỗi Hero3[3] lại mang đúng giá trị “The Incredible Hulk” mà lại không phải là “Th” do độ lớn là [3].
Mình viết hơi lủng củng, rất mong các bạn giải đáp giúp. Cảm ơn mọi người rất nhiều.
mình nói cũng lủng củng do không có hình minh họa.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?