c-为什么这个程序无法运行?

问题描述

为什么这个程序无法运行?

#include
int main()
{
int i,j,m,n;
char a[m][n];
printf("请输入行和列:n");
scanf("%d,%d",&i,&j);
printf("n");
for(m=0;m<i;m++)
{
if(m==0||m==i-1)
for(n=0;n<j;n++)
a[m][n]='*';
else
for(n=0;n<j;n++)
{
if(n==0||n==j-1)
{
a[m][0]='*';
a[m][j-1]='*';
}
else a[m][n]=' ';
}
for(m=0;m<i;m++)
{
for(n=0;n<j;n++)
printf("%c",a[m][n]);
printf("n");
}
}
return 0;
}

解决方案

 // ConsoleApplication1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main()
{
    int i, j;
    char * a;
    printf("please inputn");
    scanf_s("%d,%d", &i, &j);
    printf("n");
    a = new char[i*j];
    for (int m = 0; m < i*j; m++)
        a[m] = ' ';
    for (int m = 0; m<i; m++)
    {
        if (m == 0 || m == i - 1)
            for (int n = 0; n<j; n++)
                a[m*j+n] = '*';
        else
            for (int n = 0; n<j; n++)
            {
                if (n == 0 || n == j - 1)
                {
                    a[m*j] = '*';
                    a[m*j +j - 1] = '*';
                }
                else a[m*j+n] = ' ';
            }
        for (int m = 0; m<i; m++)
        {
            for (int n = 0; n<j; n++)
                printf("%c", a[m*j + n]);
            printf("n");
        }
    }
    return 0;
}

大概给你修改了下,VS2013运行通过

解决方案二:

c里面数组定义只能常量吧char a[m][n];,m,n是变量

解决方案三:

 please input
4,5

*****

*****
*   *

*****
*   *
*   *

*****
*   *
*   *
*****
Press any key to continue . . .

解决方案四:

c语言里面不能像你的程序那样想动态的去声明一个数组,你要明确的去指定数组的元素数,或者直接初始化,好让系统知道要给你申请多少内存放东西

解决方案五:

  1. char a[m][n];,m,n不能是变量
    2.for(m=0;m<i;m++)
    {
    for(n=0;n<j;n++)
    printf("%c",a[m][n]);
    printf("n");
    }
    这个应该反在整个for(m=0;m<i;m++){}的外面

解决方案六:

我想你是想动态申请内存的,C语言有个malloc函数,可以做到,具体可以查看下malloc的用法

解决方案七:

C语言里面,无法动态定义a[m],或者a[m][n].但是可以这样定义一个方法,接收到数据再进行定义。
能帮到你就太好了。。

解决方案八:

变量m, n没有初始化呀,运行到char a[m][n],会造成a这个多维数组过大,从而击穿栈空间,导致段错误

解决方案九:

变量m, n没有初始化呀,运行到char a[m][n],会造成a这个多维数组过大,从而击穿栈空间,导致段错误

时间: 2025-01-21 09:27:04

c-为什么这个程序无法运行?的相关文章

dll-在 v2010中引用某个Dll后 所有.net程序无法运行

问题描述 在 v2010中引用某个Dll后 所有.net程序无法运行 重装的系统及vs2010. 一切正常. 在引用某个从网上下载的mysql.data.dll后,所有的.net程序都无法运行,就像没有安装framework一样. 但用IIS加载.net网页没问题. 运行不了后尝试重装过vs2010,所有framework运行库,重注册dll,都没用. 请问不重装系统怎么破? 解决方案 估计引用dll和你的系统崩溃之间只是巧合.你的系统被流氓软件破坏了. 不重装系统要想解决除非你有足够多的钱和时

frame-关于opencv程序一运行就出错,帮帮我啊

问题描述 关于opencv程序一运行就出错,帮帮我啊 #include"highgui.h" int main(int argc,char** argv) { cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE); CvCapture* capture=cvCreateFileCapture(argv[1]); IplImage* frame; while(1){ frame=cvQueryFrame(capture); if(!

在Java程序中运行外部类文件

程序 在Java程序中运行外部类文件 一.引言无论是用传统的编程语言(C++.VB等)还是Java语言编程,都经常需要在一个运行的程序中执行另外一个独立的外部程序.例如用Java设计一个IDE程序,那么这个IDE程序就必需能够调式.运行其它独立的外部Java程序.况且直接运行已经存在的外部程序来实现本程序的某些特定的功能,也是提高程序开发效率的一种重要手段.Java2为实现在一个Java程序中运行外部类文件(即Java程序)提供了的两种解决方案,即在同一进程中运行外部类文件和在不同进程中运行外部

基于.Net平台应用程序唯一运行实例C#代码实现

程序 概述本文是针对<基于.Net平台应用程序唯一运行实例实现>的补充,文章给出功能实现代码,其中SingleInstance类实现只允许一个实例运行,Program为测试主程序入口.在代码中标识说明文字.完整代码下载. 主要代码SingleInstance.cs文件, using System;using System.IO;using System.Diagnostics;using System.Threading;using System.Reflection;using System

用C#给程序加启动画面并只允许一个应用程序实例运行

程序 涉及类: 1. 启动画面类: public class SplashForm : System.Windows.Forms.Form { private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label lbl_version; /// <summary> /// 必需的设计器变量. /// &

程序只运行一个实例,并激活前一个实例

示例代码运行效果图如下: 实现程序只运行一次的方法很多,但是原理都是一样的,就是运行第一次的时候设置一个标记,每次运行的时候检查该标记,如果有就说明已经运行了. 具体实现: 1.在程序初始化的时候 (InitInstance()) 枚举所有的窗口,查找本程序的实例是否存在 2.在主窗口初始化的时候在本窗口的属性列表中添加一个标记,以便程序查找. 部分关键代码 1.在App的InitInstance()中枚举所有窗口,查找本程序实例 HWND oldHWnd = NULL; EnumWindows

在一个程序后面运行另一个程序

问:怎样在一个程序运行后面运行另一个程序? ●1. 在一个程序里面运行另一个程序的最简单的方法是把它们依次列入一个批处理文件(扩展名为.BAT的文件),在执行该批处理文件时,其中所列程序就会自动运行.在C或DOS中,都没有一种特定的方法来完成"在一个程序结束后运行另一个程序"这样一种函数调用.然而,C提供了两组函数,它们允许一个程序随时可以运行另一个程序,而后者的运行将结束前者的运行.如果你将这样的函数调用放在第一个程序的末尾,就能达到上述目的.C提供的这两组函数是exec()和spa

VC++中实现程序互斥运行

在软件的开发过程中,有时需要控制一些程序不能同时运行,也就是多个程序间互斥运行(还包括禁止同一程序运行多个实例).针对这一问题,我们在Visual C++ 6.0中利用内存映射文件实现了多个程序间的互斥运行. 在讲述具体的编程方法之前,让我们先来看看和内存映射文件操作有关的几个重要的函数: 1)CreateFileMapping函数为指定的文件创建一个文件映射对象,该函数的原型如下: HANDLE CreateFileMapping( HANDLE hFile, // 用于映射的文件句柄 LPS

如何让VC和Delphi程序只运行一个实例

有些时候,我们需要我们的程序只运行一个实例,笔者自己作程序也有这样的情况,于是自已探究一番.忙活一阵后,总算小有收获,不敢独享,在天极发表出来,供大家参考. 既然是从根本上解决问题,对于Windows程序而言,就从WinMain函数入口,这是因为在VC中使用SDK的方式编写程序最透明,并且WinMain是作为VC编译器生成EXE文件的默认入口函数. WinMain的函数原型: int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, L

如何使应用程序只运行一个实例

要使应用程序只运行一个实例,一个简单的方法是在应用程序类中使用互斥量,这可以用VC下的GUIDGEN.EXE程序产生.GUIDGEN.EXE位于VC安装目录CommonTools目录下 实例 1: 新建一基于对话框的工程ex1,采用默认设置 2: 用GUIDGEN.EXE产生一个全局标志,#define one "产生的全局标志" 本例中产生的语句如下:#define one "0xbe8e2ce1, 0xdab6, 0x11d6, 0xad, 0xd0, 0x0, 0xe0