您好,我正在介绍C编程 class ,所以我使用的是非常基本的代码。在这里,我只是想从主字符串中获取逗号矩阵。但是,当我尝试运行该程序时,它不断崩溃,我不知道我的问题是什么。我能够正确使用fgets函数,因此我认为它仍然可以正常工作。

CD Data.txt文件

Eagles, Hotel California, 1976, Rock, 4
The Fratellis, Costello Music, 2006, Garage Rock, 5
Awolnation, Megalithic Symphony, 2011, Indie Rock, 5
Lindsey Stirling, Lindsey Stirling, 2012, Classical Crossover, 5
Arctic Monkeys, AM, 2013, Indie Rock, 4

程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define row 1000
#define column 1000

void getCommas(char str[], int commas[])
{
    int flag, count, index;

    count = 0;
    index = 0;
    flag = 1;
    while(flag = 1)
    {
        if(str[count] = ',')
        {
            commas[index] = count;
            index = index + 1;
        }
        count = count + 1;

        if(str[count] = '\0')
        {
            flag = 0;
        }
    }

}

int main()
{
    int i;

    char CdInfo[row][column];
    int Index[row][column];

    FILE *fp;
    fp = fopen("CD Data.txt","r");

    for(i=0; i<5; i++)
    {
        fgets(CdInfo[i], sizeof CdInfo, fp);
        //printf("%s\n",CdInfo[i]);
    }

    for (i=0; i<5; i++)
    {
        getCommas(CdInfo[i], Index[i]);
    }

    fclose(fp);
    return 0;
}

最佳答案

这两个变量太大而无法堆栈:

int main()
{
    int i;

    char CdInfo[row][column]; //<<
    int Index[row][column];   //<<

将它们声明为静态或全局变量。

和:
while(flag = 1)

应该
while(flag == 1)

和所有
if (str[count] = ...

应该
if(str[count] == ...

10-04 17:50