您好我正在构建一个应用程序,它将检查文件中的数字是否全部是固定的,如果没有 - 修复它们(取决于具体的国家/地区代码)。 为了检查数字是否良好,我首先需要查看国家/地区代码,为此我需要读取前3个字符(来自文件中的电话号码)以查看该号码是否还有国家/地区代码。 当我运行下面的代码时,我正在
变量'country_code'周围的堆栈已损坏“。
我认为我从字符串中读取特定的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的字符。
答案 0 :(得分:1)
您没有为空终止符提供空间。
char country_code[3];
应该是
char country_code[4];
答案 1 :(得分:1)
我可以看到两个潜在的问题:
char
数组也需要存储空终止,因此应将其定义为
char country_code[4]
否则无法定义数组的结尾。
在scanf
中,您正在传递指针的指针。你应该改变
fscanf(f, "%3s %s", &country_code, &num)
到
fscanf(f, "%3s %s", country_code, num)
没有&
。