使用初始化局部变量查找字符串长度时出现分段错误

时间:2018-03-29 19:15:21

标签: c

我必须修改一个程序,该程序读取文本文件并重新格式化,以便一行不超过一定数量的字符,由用户设置。如果一行确实超过了指定的字符限制,那么现在让我们说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;



}

0 个答案:

没有答案