我必须修改一个程序,该程序读取文本文件并重新格式化,以便一行不超过一定数量的字符,由用户设置。如果一行确实超过了指定的字符限制,那么现在让我们说60,将它推过限制的单词放在下一行。我的问题是,当我使用strlen来查找字符串的长度(添加到总字符跟踪器)时,我遇到了分段错误(核心转储)。我开始乱用我的代码,发现当我初始化变量maxLine = 60;
时,我得到了分段错误,但是如果要将变量初始化为#define MAXLINE 60
我不再会出现分段错误。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
FILE *file;
file = fopen("read.txt", "r");
if (file == NULL)
{
printf("File does not exist\n");
exit(EXIT_FAILURE);
}
int length;
char *string;
int charCount = 0;
int maxLine = 60;
while((fscanf(file, "%s", string)) != EOF)
{
length = strlen(string);
if ((length + charCount) > maxLine)
{
charCount = 0;
printf("\n");
}
printf("%s ", string);
charCount += length;
charCount++;
}
printf("\n");
return 0;
}