【问题标题】:Error in code blocks and shows segmentation fault in online compilation?代码块错误并在在线编译中显示分段错误?
【发布时间】:2014-02-03 11:33:42
【问题描述】:

以下代码导致代码块停止。显示为某些问题导致程序关闭。当我尝试在线编译时,它显示为分段错误(核心转储)。我找不到它是什么!

//Hash table

#include<stdio.h>
#include<string.h>

int main()
{
    int option,i,key;
    char value[10], hashtab[10][10];

    for(i=0;i<10;i++)
    {
        strcpy(hashtab[i],'\0');
    }

    printf("\nEnter 1-Insert ANY-Exit");
    scanf("%d",&option);
    while(option==1)
    {
        printf("\nEnter the Value: ");
        scanf("%s",value);
        key=keygen(value);
        strcpy(hashtab[key],value);
     }

    for(i=0;option==2&&i<10;i++)
    {
        printf("\n%s",hashtab[i]);
    }
}

int keygen(char *value)
{
    int i,key=0;
    for(i=0;i<strlen(value);i++)
    {
        key=key+value[i];
    }
    return key;
}

【问题讨论】:

    标签: c segmentation-fault codeblocks


    【解决方案1】:

    for 循环中使用的strcpy 应为以下参数,

      char *strcpy(char *dest, const char *src);
    

    理想情况下,传递的第二个参数应该是src 指向的字符串。

    成功了,strcpy(hashtab[i], "\0"); 应该可以了。

    【讨论】:

    • 是的,hashtab[i] = 0; 在这种情况下可能是首选,或者如果编译器不是来自石器时代,则更好的是 char hashtub[10][10] = {};,尽管前者的性能可能会更好。跨度>
    • 是的。可以使用简单的赋值。
    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多