簡體   English   中英

無法訪問地址處的內存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM