[英]C language, char array is corrupted(?)
我沒有對“org”字符數組做任何事情,但是當我看到 output 時。 'org' 數組從香蕉更改為香蕉。 我猜這是由 memory 損壞或其他原因引起的,但我不知道到底出了什么問題。 如何修復 org char 數組的內容?
#include <stdio.h>
#include <string.h>
char org[];
int N;
char clue[1010][110];
int arrest[1010];
void solve(){ // Core function
char* copy;
int len_org, len_clue, tmp=0, cnt=0;
int i, j;
len_org = strlen(org);
//printf("len_org = %d\n", len_org);
for(i=0; i<N; i++){
//copy = org;
//memset(copy, 0, strlen(len_org));
//printf("org = %s\n", org);
copy = org;
cnt = 0;
printf("first copy = %s, org = %s\n", copy, org);
len_clue = strlen(clue[i]);
printf("len_clue = %d\n", len_clue);
tmp = len_org - len_clue;
for(j=0; j<=tmp; j++){
printf("clue[i] = %s, copy = %s\n", clue[i], copy);
if(!strncmp(copy, clue[i], len_clue)){
cnt++;
printf("cnt = %d\n", cnt);
}
copy++;
printf("copy = %s, org = %s\n", copy, org);
}
printf("final cnt = %d\n\n", cnt);
arrest[i] = cnt;
}
/*for(i=0; i<N; i++)
printf("%s\n", clue[i]);*/
}
void inputData(){
int i;
scanf("%s", org);
scanf("%d", &N);
for(i=0; i<N; i++){
scanf("%s", clue[i]);
}
}
int main() {
inputData();
solve();
return 0;
}
使用 gcc (7.3) 編譯代碼確定問題:
cc a.c
a.c:4:6: warning: array ‘org1’ assumed to have one element
char org1[];
^~~~
在實踐中(gcc 7.3)“org”位於“clue”和“arrset”(全局)變量之間。 從 'nm a.out' 可以看出 - 逮捕開始 org 后 4 個字節,使得 'org' 的有效大小為 4。
Output 來自:nm a.out | 種類
0000000000201040 B N
0000000000201060 B clue
000000000021c25c B org
000000000021c260 B arrest
000000000021d228 B _end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.