gpt4 book ai didi

c - 运行时错误 - C 编程,IDE 上没有错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:05 24 4
gpt4 key购买 nike

这里是问题的描述https://a2oj.com/p?ID=193 ,它在 Visual Studio 上运行良好,但由于某种原因,它会在网站的在线判断编译器上产生运行时错误,我很难检测到它,因为他们的编译器没有告诉是什么测试用例产生了错误。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ASCII_SIZE 255
void main(){
int testCases;
char caseInput[100];
int count[ASCII_SIZE] = {0};
int strLength;
int max = -1;
char result = NULL;
typedef struct occurrence{
int numOfOcc;
char occLetter; }Occurence;
scanf("%d",&testCases);
Occurence *ptr;
ptr = (Occurence*)malloc(testCases * sizeof(Occurence));
if (ptr){
for (int caseValue = 0; caseValue < testCases; caseValue++)
{
scanf("%s",caseInput);
strLength = strlen(caseInput);
for (int i=0; i<strLength; i++)
count[caseInput[i]]++;
for (int i = 0; i < strLength; i++) {
if (max <= count[caseInput[i]]) {
if (result > caseInput[i] && i > 0 ){
max = count[caseInput[i]];
result = caseInput[i];
}
else if ( i == 0 ){
max = count[caseInput[i]];
result = caseInput[i];
}

}
}
ptr[caseValue].numOfOcc = max;
ptr[caseValue].occLetter = result;
max = -1;
char result = NULL;
memset(count,0,sizeof(count));
}
for (int i = 0; i < testCases; i++)
{
printf("%d %c\n",ptr[i].numOfOcc,ptr[i].occLetter);
}
}
}

最佳答案

您不能在缓冲区中存储最多 100 个字母的输入字符串:

char caseInput[100];

您忘记包含终止符 '\0'

与运行时错误无关,但可能仍然是无意的:

max = -1;
char result = NULL;
memset(count,0,sizeof(count));

在这里你定义了第二个 result 隐藏了之前的定义。

也可能与您的问题无关:

void main()

不正确。做到这一点

int main(void) 

int main (int argv, char *argc[])

成功返回0。

关于c - 运行时错误 - C 编程,IDE 上没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41361195/

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