这个程序有什么问题?

时间:2015-10-28 05:15:43

标签: c runtime

#include <stdio.h>
#include<string.h>
int main() {
    char * a;
    int b[26] = {
        0
    };
    long r = 0;
    scanf("%s", a);
    int j = strlen(a);
    for (int i = 0; i < j; i++) {
        b[a[i] - 'a'] += 1;
    }
    for (int i = 0; i < 26; i++) {
        if ((b[i] / 2) * 2 == b[i])
            r += b[i] / 2;
        else
            r += (b[i] + 1) / 2;
    }
    printf("%ld", r);
    return 0;
}

输入 - SSSS

这个程序在DEV c ++编译器中的笔记本电脑上工作正常。 但是当我在ideone.com或任何其他在线编译器上运行它时会给出RUNTIME ERROR,请告诉我这个程序有什么问题

3 个答案:

答案 0 :(得分:5)

您没有为a分配内存并对其执行操作。

char* a;

分配内存

或者您也可以将a作为字符数组,就像您为b所做的那样

答案 1 :(得分:0)

您还没有为a分配任何内存。通过执行char *a静态地为char a[<some_length>];分配内存,或使用malloc函数动态执行。{/ p>

答案 2 :(得分:0)

当你给出像 char *a;之类的东西时,它意味着它是指向数据字符类型的指针。这里,“a”是指向需要分配的内存位置的指针。

char *a a=malloc(20)之类的char a[20]分配内存,或者直接使用数组// FileName: test.cpp #using <System.dll> #using <System.Windows.Forms.dll> #using <System.Drawing.dll> using namespace System; using namespace System::Drawing; using namespace System::Windows::Forms; public ref class Form1: public Form { public: Form1() { this->Text = "My Form"; this->Size = Drawing::Size(250, 150); } }; [STAThread] int main() { Application::Run(gcnew Form1); } 。它解决了你的问题。