Hy我有一個示例代碼bleow,它應該以液晶顯示器(正在運行的文本)的方式寫入「MSG」,並且當它到達結尾時它會再次發生切換,但是當我爲「LCD」分配內存(可以是10個字符+終止0)用一堆隨機字符填充它。 Sample picture爲char分配內存時奇怪的字符*
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void delay(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
int main()
{
int LCDSize = 10;
int MSGSize;
char* LCD = (char *)malloc(LCDSize+1);
char* MSG = (char *)malloc(80);
MSG = "This is a long message, probabli will move.";
MSGSize = strlen(MSG);
if (MSGSize <= LCDSize)
{
printf(MSG);
}
else
{
char* tmpMSG;
int j = 0;
while (j < 2)
{
for (int i = 0; i < MSGSize - LCDSize + 1; i++)
{
tmpMSG = MSG+i;
strncpy(LCD, tmpMSG, LCDSize);
strcat(LCD,"\0");
printf(LCD);
delay(200);
system("cls");
}
printf("----------");
j++;
}
}
getchar();
return 0;
}
可能是什麼問題呢?
使用'printf(MSG);'不是一個好主意;你應該使用'printf(「%s」,MSG);'。這裏並不重要,因爲用戶無法控制消息的內容,並且消息中不包含百分號(如果一切正常),但通常用戶提供的數據可以打印,所用的內容可能會致命。他們被稱爲「格式字符串漏洞」。 –