gpt4 book ai didi

c - 运行时错误 sigsegv

转载 作者:行者123 更新时间:2023-11-30 19:23:39 27 4
gpt4 key购买 nike

我收到运行时错误 sigsegv,我不明白这段代码的问题。这是一个将初始子字符串与具有最高优先级的字符串数组进行匹配的程序。

#include<stdio.h>
#include<limits.h>
int main() {
int T,i,N;
char si[T][1000];
long vi[T];
scanf("%d",&T);
for(i=0;i<T;++i)
scanf("%s%ld",&si[i],&vi[i]);

scanf("%d",&N);
while(N--) {
char str[1000];
scanf("%s",str);
int j,maxPindex=-1;
long maxPriority=LONG_MIN;
int l=strlen(str);
for(j=0;j<T;++j) {
if(strlen(si[j])>=l && strncmp(str,si[j],l)==0 && vi[j]>maxPriority) {
maxPriority=vi[j];
maxPindex=j;
}
}
//free(str);
if(maxPindex==-1) printf("NO\n");
else printf("%s\n",si[maxPindex]);
}
return (0);

}

最佳答案

当它尝试创建变量“si”时,它已经崩溃了。函数内的 C 变量(例如变量“T”)以随机垃圾作为其值开始。例如,它可能包含 918128238。然后,当尝试创建“si”时,这将是一个非常大的数组,并且不适合。

在创建“si”和“vi”之前,您需要读取“T”的值。也就是说,将 scanf 移到“si”和“vi”声明之前。

关于c - 运行时错误 sigsegv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com