c -为什么我有一个分割错误


#include <stdio.h>
#include <string.h>
int main()
{
//read any text file
char const* const fName = "database-large.txt";
FILE* fp = fopen(fName, "r");

char *ptr;
char substr[5000];
long i=0, j=0;
// if file not opened
if(!fp){
printf("n Error in open : %s ", fName);
return -1;
}
// to strore each line
char line[5000];
// read line by line
while (fgets(line, sizeof(line), fp)) {
//to extract mailid in between "From:" and "n"
ptr = strstr(line, "Date:");
i=ptr-line;
while(line[i] !='n')
{
substr[j] = line[i+9];
i++;
j++;
}
printf("%sn", substr);
}

// to close the file
fclose(fp);
return 0;
}

为什么这个编译但是给了我一个分段错误,当我运行它时,因为行&;while(line[I] !='n')&;这是我在运行代码时遇到的唯一问题。

需要检查strstr是否返回空指针。否则调用strstr

后的语句
ptr = strstr(line, "Date:");
i=ptr-line;

可以在ptr等于NULL时调用未定义行为。

第二个问题是,您没有在每次while循环的迭代中将变量j重置为0

第三个问题是,如果在调用

时使用转换说明符%s,数组substr必须包含字符串
printf("%sn", substr);

否则你需要写

printf("%.*sn", ( int )j, substr);

相关内容

  • 没有找到相关文章

最新更新