gpt4 book ai didi

c - 我试图只从文件中读取前 3 个字符 - c

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:12 25 4
gpt4 key购买 nike

您好,我正在构建一个应用程序,它将检查文件中的数字是否全部修复,如果没有修复它们(取决于特定的国家/地区代码)。为了检查号码是否正确,我首先需要查看国家代码,为此我需要读取前 3 个字符(来自文件中的电话号码)以查看该号码是否有国家代码。当我运行下面的代码时,我得到了

Stack around the variable 'country_code' was corrupted".

我认为是我从字符串中读取特定的 3 个字符造成了问题,但我找不到到底是什么原因造成的。

void fix_file_il_country(char *filename)
{
FILE *f = fopen("1.txt", "r"); //The file to check from
if (f == NULL)
{
printf("EROR\n");
return;
}
FILE *fp = fopen(filename, "w"); //The new file with fixed numbers
if (f == NULL)
{
printf("EROR\n");
return;
}
char num[20];
char country_code[3];
fscanf(f, "%3s %s", &country_code, &num);
while (!feof(f))
{
if (strlen(num) == 12)
if (country_code == "972")
fprintf(fp, "%s\n", num);
fscanf(f, "%3s %s", &country_code, &num);
}
fclose(f);
fclose(fp);
}

像这样的数字:9725XXXXXXXX应该写入新文件不应写入诸如 123XXXXXXXXX 之类的数字,或字符多于\少于 12 的数字。

最佳答案

您没有为空终止符提供空间。

char country_code[3];

应该是

char country_code[4];

另请参阅 Why is “while ( !feof (file) )” always wrong?

关于c - 我试图只从文件中读取前 3 个字符 - c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50638378/

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