gpt4 book ai didi

c - 查找输入文件中的最大行长度和最大行数,但我遇到了段错误?

转载 作者:行者123 更新时间:2023-11-30 14:40:35 25 4
gpt4 key购买 nike

我正在尝试将文件输入到二维数组中,但在尝试查找最大行长度和最大行数时出现段错误。 seg 错误发生在函数 checkSpelling 中。我尝试使用 gdb 来查看 seg 错误发生的位置,但我发现它立即退出,但我不完全理解。我的代码如下。任何帮助是极大的赞赏。

#define MAX 1000000

struct TData{
char **pChar;
};

int checkSpelling(const char *input, const char *dict, struct TData *pInput, struct TData *pDictionary);
int searchReplace(const char *input, const char *dict, struct TData *pInput, struct TData *pDictionary);
int save(const char *input, const char *output);

int main (int argc, char **argv){
struct TData input, dictionary, output;
int choice = 0;

if(argc != 4){
printf("Not enough input arguments in the command line.\n");
exit(1);
}

do{
printf("Menu\n");
printf("1. Check the spelling for the file using the dictionary.\n");
printf("2. Search and replace a given string in the inputed file.\n");
printf("3. Save the modified file to the output file.\n");
printf("4. Exit the program.\n");
scanf("%d", &choice);

switch(choice){
case 1:
checkSpelling(argv[1], argv[3], &input, &dictionary);
break;
case 2:
searchReplace(argv[1], argv[3], &input, &dictionary);
break;
case 3:
save(argv[1],argv[2]);
break;
case 4:
choice = 4;
break;
default:
printf("Input is invalid");
break;
}
}while (choice != 4);
return 0;
}

int checkSpelling(const char *input, const char *dicto, struct TData *pInput, struct TData *pDictionary){

FILE *inputFile;
FILE *dictFile;
int i = 0, j = 0, k = 0, l = 0, m = 0;
char temp[60], dicttemp[60];
int rowCount = 0, charCount = 0;

printf("Checking the spelling of the inputed file.\n");
printf("Opening the inputed file...\n");
if((inputFile = fopen(input, "rt")) == NULL){
printf("Cannot open file\n");
exit(1);
}

printf("Opening the dictonary...\n");
if((dictFile = fopen(dicto, "rt")) == NULL){
printf("Cannot open dictionary\n");
exit(1);
}

while(!feof(inputFile)){
if(pInput->pChar[i][j] == '\n'){
rowCount++;
}
}
rewind(inputFile);

pInput->pChar[i][j] = 0;

while(pInput->pChar[i][j] != '\n'){
charCount++;
}
rewind(inputFile);

printf("Lines: %d, Max line length: %d", rowCount, charCount);

fclose(inputFile);
fclose(dictFile);

printf("\n");
return 0;
}

最佳答案

这是一个小代码,用于说明该任务

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

#define MAX_LENGTH 1000

int main()
{
FILE *fp;
char line[MAX_LENGTH];
size_t n_rows, n_cols, length;

fp = fopen("myfile.txt", "r");

n_cols = 0;
n_rows = 0;
while (fgets(line, MAX_LENGTH, fp) != NULL) {
n_rows++;
length = strlen(line);
if (length > n_cols)
n_cols = length;
}

fclose(fp);

/* the number of lines is in n_rows and the max line length is in n_cols
do whatever you want with them */

return 0;
}

关于c - 查找输入文件中的最大行长度和最大行数,但我遇到了段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55464549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com