我尝试过如此多的代码试图在直方图中显示我的数据。我已经被困在这个问题上两天了,数据爬行互联网等等找到答案,但他们通常会谈论指针等。而这是更基本的。我尝试过显示相同错误的实际直方图,但为了保持简单,我选择发布这个。
这是C编程语言中程序的描述: “编写一个程序来打印输入中单词长度的直方图。” 我正在水平做,然后我会垂直做。虽然,在这个例子中,我只是试图显示数字,显然。
#include <stdio.h>
#define MAXIMUM 99
main()
{
int i, c, j, lenOfWord[MAXIMUM], charCount;
for (i = 0; i < MAXIMUM; i++)
lenOfWord[i] = 0;
printf("Starting program, please type then ctrl+d\n");
while((c = getchar()) != EOF) {
if (c == ' ') {
//new word
++lenOfWord[charCount];
charCount = 0;
}
else
//inword
++charCount;
}
printf("\n Displaying now... \n");
for (j = 0; j <= MAXIMUM; j++)
printf("%d: %d", j, lenOfWord[j]);
}
输出:
JohnJackson@linux-72db:~/Desktop> gcc c.c -o c
JohnJackson@linux-72db:~/Desktop> ./c
Starting program, please type then ctrl+d
Hello my name is john jacksonSegmentation fault
*当我执行EOF(ctrl + D)
时,最终会出现分段错误附加信息:来自openSUSE linux终端的GCC编译器
非常感谢,我正在努力学习C但是我已经打了很多这样的路障,我感到很沮丧。
答案 0 :(得分:2)
实际问题是
++lenOfWord[charCount];
charCount = 0;
在使用之前,您尚未将charCount
初始化为0
。首先在循环之前将其初始化为0
charCount = 0;
while((c = getchar()) != EOF) {
在循环中将charCount
分配给0
是没有用的。删除它。
你还要检查一件事。由于数组大小为MAXIMUM
。因此,您必须检查charCount
是否超过MAXIMUM
。否则,它将再次提供segmentation fault
。
另一个问题是for循环条件。而不是
for (i = 0; i < MAXIMUM; i++)
将其更改为
for (i = 0; i < MAXIMUM; i++)
和
而不是
for (j = 0; j >= MAXIMUM; j++)
到
for (j = 0; j < MAXIMUM; j++)
否则你将无法获得任何输出。
答案 1 :(得分:0)
您的charCount
变量未初始化