您好,我正在介绍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] == ...