当前位置: 首页 > 知识库问答 >
问题:

Ubuntu中C程序运行时错误。但在苏诺斯井执行

巩才捷
2023-03-14
cc -V
gcc -v
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<inttypes.h>

int main()
{
FILE *fpin,*fpout;
char ch[11], file_name[100];
long long int num1=0,i,tmp=0;
long long int *arr;

printf("enter file name:: ");
gets(file_name);

fpin = fopen(file_name,"r");
fpout = fopen("/home/code/output.c","w");

while(1)
{
 fgets(ch,11,fpin);
 if (!feof(fpin))
 {
   num1=atoll(ch);

   arr = prime_number(num1);

   for(i=0;*(arr+i)!='\0';i++)
      {
         fprintf(fpout,"%llu",*(arr+i));
         if(*(arr+i+1) == '\0')
             fputc('.',fpout);
         else
             fputc(',',fpout);
      }

 }
 else 
 {
   fclose(fpin);
   fclose(fpout);
   break;
 }
}

}

prime_number(long long int n)
{
  long long int i,j,total=0,a[200];
  int count=0;

  printf("\n%llu \n",n);

  for (j=2;j<=n;j++)
  {
     count = 0;
     for (i=1;i<=j;i++)
       {`enter code here`
         if ((j%i) == 0)
           count++;

         if (count > 2)
            break;
        }
     if (count==2)
        {
          a[total] = j; 
          total++; 
        }
  } 
return(&a[0]);
}

共有1个答案

张和豫
2023-03-14

在prime_number函数的末尾,您将返回一个指向变量的指针,该变量是在prime_number函数本身(堆栈)中定义的。因为当函数存在时,它的堆栈的内容被有效地蒸发了,所以您返回的是一个无效的指针。

当然,根据您运行的系统、操作系统等,堆栈的内容可能没有被立即覆盖,并且在短时间内看起来是有效的,但这只是运气。

尝试对返回结果进行错误定位(并与调用方释放),或者将数组传递给prime_number函数。这样,内容对调用方仍然有效。

 类似资料:
  • 问题内容: 我必须为Java类简介创建一个项目,并在最终解决语法错误之后,单击播放或保存按钮时,该程序出现运行时错误。 每当我单击播放按钮开始播放文件中的音乐时,都会出现此错误: 当我单击保存按钮时,出现此错误: 谁能告诉我什么地方出了问题或如何解决?任何帮助,将不胜感激,我在这个东西上有点慢:) 问题答案: 对于播放按钮错误:通过计数行(75-> 86),我推断出该语句中的错误 这是因为表(字段

  • 用编译后,我尝试用java运行,它运行了,但随后抛出了一个

  • 我正在写一个程序,显示如下所示的航班信息: 我的问题是使用方法时: 当正常运行时,由于某种原因它不会执行,但是当我使用调试器执行程序时,一切都执行得很好,我得到了一个有意义的输出(格式不是很好,但我可以使用),为什么会发生这种情况? 输出应该是这样的: 当我正常运行时,我会得到这个: 这是当我一步虽然(或运行调试): 我希望输出的是单步执行部分(稍后我将处理格式化) eddit:我已经在错误流中添

  • 我过去经常用这样的命令运行程序: 然后我可以用我的Ubuntu系统的显示器运行wireshark。就像这个页面的例子:用docker运行GUI应用程序 现在它不工作了。当我运行wireshark时,我得到这个错误:

  • 我已经重新安装了jdk并将其添加到路径变量中,但现在在运行程序时,它向我显示“启动错误”。我如何解决它??

  • 我正在使用一个在线编译器来运行这个简单的代码,但是它给出了一个运行时错误,“Could not find or load class main”没有其他语法错误。请提出解决方案。