我的程序不断崩溃

时间:2014-05-05 00:30:32

标签: c crash

因此,由于某种原因,我的程序不会运行。它用于在列中创建有对齐的文本。只有1行文本在列的大小下。只需要帮助它崩溃的问题,所以我可以解决它是否有任何其他问题。我对字母组合仍然有点新,所以提示赞赏。提前感谢您的所有时间和帮助。

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

int col, textlen, space, i, j, letters, spaces;
char text[100];
bool ok;

int main()
{
    // Setting varibles.
    col = 0;
    textlen = 0;
    space = 0;
    i = 0;
    letters = 0;
    spaces = 0;
    ok = false;
    // Prompt and validation.
    while (ok = false)
    {
        printf("Enter the width of the column: ");
        scanf("%d", &col);
        printf("\n");
        printf("Enter a line of text: ");
        gets(text);
        textlen = strlen(text);
        if (col > textlen)
        {
            ok = true;
        }
        else
        {
            printf("Your text is too long for this column please try again.");
        }
    }
    // Working out the space left.
    for (i = 0; i = strlen(text); i++)
    {
        if (text[i] != ' ')
        {
            letters++;
        }
        if (text[i] == ' ')
        {
            spaces++;
        }
    }
    space = (col - letters) / spaces;
    // Writing the final product.
    i = 0;
    while (text[i] != '\0')
    {
        while ((text[i] != ' ') || (text[i] != '\0'))
        {
            printf("%c", text[i]);
        }
        if (text[i] == ' ')
        {
            for (j = space; j > 0; j--)
            {
                printf(" ");
            }
        }
        else
        {
            break;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

替换

while(ok=false)

while(ok==false)

应该是一个开始

答案 1 :(得分:1)

while(ok=false){

应该是

while(ok==false){

(第一个是作业,第二个是考试)。

并且

for(i=0;i=strlen(text);i++){

应该是

for(i=0;i<strlen(text);i++){

答案 2 :(得分:-2)

你有一个SIGPFE(算术异常行34)

这是因为除以0,因为空格= 0

您的条件也是&#39; =&#39;而不是&#39; ==&#39;这是一个错误

你有时会忘记增加我......

这是你的代码工作

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


int main()
{
    // Setting varibles.
    int col=0, textlen=0, space=0, i=0, j=0, letters=0, spaces=0;
    bool ok=false;
    char text[100];

    // Prompt and validation.
    while(ok==false)
    {
        printf("Enter the width of the column: ");
        scanf("%d", &col);
        printf("\nEnter a line of text: ");
        fflush(stdin);
        gets(text);
        textlen=strlen(text);
        if(col>textlen)
        {
            ok=true;
        }
        else
        {
            printf("Your text is too long for this column please try again.\n");
        }
    }
    // Working out the space left.
    for(i=0; i<textlen; i++)
    {
        if(text[i]!=' ')
        {
            letters++;
        }
        if(text[i]==' ')
        {
            spaces++;
        }
    }
    if (spaces) space=(col-letters)/spaces;
    // Writing the final product.
    i=0;
    while(i<textlen)
    {
        while(text[i]!=' ' && i<textlen)
        {
            printf("%c", text[i]);
            ++i;
        }
        if(text[i]==' ')
        {
            for(j=0; j<space; j++)
            {
                printf(" ");
            }
            i++;
        }
    }
    return 0;
}