Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带数组的分段故障(堆芯转储)C程序 #包括 #包括 #定义大小1000 内部主(空) { 已发送字符[]=“\0”; 字符alpha[]=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”; 无符号整数计数; 无符号整数k; 无符号整数j; printf(“请输入要分析的句子\n”); FGET(已发送、大小、标准输入); printf(“\n字母\t | | \t计数\n”); printf(“==========================================================\n”); 对于(j=0;alpha[j]!='\0';j++) { 计数=0; 对于(k=0;已发送[k]!='\0';k++) { 如果(α[j]==发送[k]) { 计数++; } } printf(“\t%c\t | | \t%u\n”,α[j],计数); printf(“-------------------------------------\n”); } 返回0; }_C_Arrays_String_Fgets - Fatal编程技术网

带数组的分段故障(堆芯转储)C程序 #包括 #包括 #定义大小1000 内部主(空) { 已发送字符[]=“\0”; 字符alpha[]=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”; 无符号整数计数; 无符号整数k; 无符号整数j; printf(“请输入要分析的句子\n”); FGET(已发送、大小、标准输入); printf(“\n字母\t | | \t计数\n”); printf(“==========================================================\n”); 对于(j=0;alpha[j]!='\0';j++) { 计数=0; 对于(k=0;已发送[k]!='\0';k++) { 如果(α[j]==发送[k]) { 计数++; } } printf(“\t%c\t | | \t%u\n”,α[j],计数); printf(“-------------------------------------\n”); } 返回0; }

带数组的分段故障(堆芯转储)C程序 #包括 #包括 #定义大小1000 内部主(空) { 已发送字符[]=“\0”; 字符alpha[]=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”; 无符号整数计数; 无符号整数k; 无符号整数j; printf(“请输入要分析的句子\n”); FGET(已发送、大小、标准输入); printf(“\n字母\t | | \t计数\n”); printf(“==========================================================\n”); 对于(j=0;alpha[j]!='\0';j++) { 计数=0; 对于(k=0;已发送[k]!='\0';k++) { 如果(α[j]==发送[k]) { 计数++; } } printf(“\t%c\t | | \t%u\n”,α[j],计数); printf(“-------------------------------------\n”); } 返回0; },c,arrays,string,fgets,C,Arrays,String,Fgets,每次我运行这个程序,我都会得到错误“分段错误(内核转储)”。然而,程序似乎运行正常。为什么会发生这种情况?我能做些什么来解决这个问题 在代码中 #include <stdio.h> #include <string.h> #define SIZE 1000 int main(void) { char sent[] = "\0"; char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu

每次我运行这个程序,我都会得到错误“分段错误(内核转储)”。然而,程序似乎运行正常。为什么会发生这种情况?我能做些什么来解决这个问题

在代码中

#include <stdio.h>
#include <string.h>
#define SIZE 1000

int main(void)
{
char sent[] = "\0";        
char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
unsigned int count;
unsigned int k;
unsigned int j;                                                            

printf("Please enter a sentence to analyze\n");
fgets(sent, SIZE, stdin);  


printf("\n     Letter\t ||\tAmount\n");
printf(" ================================\n");

    for(j = 0; alpha[j] != '\0'; j++)
    {
        count = 0;

        for (k = 0; sent[k]!= '\0'; k++)
        {

            if ( alpha[j] == sent[k])
            {                          
                count++;                                   
            }

        }

        printf("\t%c\t ||\t %u\n", alpha[j], count);
        printf(" --------------------------------\n");  
    }  


    return 0;

}
正在分配的数组大小仅等于提供的初始值设定项
“\0”
(和null终止符)的大小。因此,在以后的某一点上,通过

 char sent[] = "\0"; 
您正在访问超出限制的内存。这引起了人们的注意

引用
C11
标准,第§6.7.9章

如果初始化了未知大小的数组,则其大小由索引的最大值确定 具有显式初始值设定项的元素。[……]

您需要的是在定义时提供数组大小,如

fgets(sent, SIZE, stdin);

所需的操作是生成segfault?
但是程序似乎运行正常。
等等……什么?
 char sent[SIZE] = "\0";