[英]Cannot access memory at address
char* dayOfProgrammer(int year) {
char s[15];
if (year >= 1700 && year < 1918) {
if (year % 4 == 0) {
strcpy(s,"12.09.");
strcat(s,(char*)(intptr_t)year);
} else {
strcpy(s,"13.09.");
strcat(s,(char*)(intptr_t)year);
}
}
if (year >1918 && year < 2700) {
if(year%400==0 || (year%4==0 && year%100!=0)){
strcpy(s,"12.09.");
strcat(s,(char*)(intptr_t)year);
}else{
strcpy(s,"13.09.");
strcat(s,(char*)(intptr_t)year);
}
}
if(year==1918){
strcpy(s,"26.09.");
strcat(s,(char*)(intptr_t)year);
} return s; }
我曾經嘗試過任何東西來輸出但它顯示錯誤
0x00007fc49d95dc85 in __strcpy_chk (dest=0x7ffed426cc9f "",
src=0x7e1 <error: Cannot access memory at address 0x7e1>, destlen=15)
at strcpy_chk.c:28
我的任務是添加指針char和數字,例如(“ 12.09。” + some number)。
如果您有任何方法,請提出建議。 我也嘗試了內存分配,但是也沒有用。 我發現連接指針字符串和int非常困難
strcpy(s,"12.09.");
strcat(s,(char*)(intptr_t)year);
這很可能沒有按照您的想法去做。 您將年份轉換為一個地址,然后嘗試訪問它,幾乎在每種情況下都會調用未定義的行為。 您應該看一下適合此任務的snprintf
函數:
snprintf(s, sizeof s, "12.09.%d", year);
下一個問題是您試圖返回一個局部數組,這也會導致未定義的行為。 您必須使其static
或使用malloc
分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.