gpt4 book ai didi

c - 运行以下文件处理 C 程序时,为什么输出不符合预期?

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

这是一段代码,通过从一个文件获取输入并在另一个文件中给出输出来执行数字的平方。

#include<stdio.h>
#include<stdlib.h>

void main() {
FILE *fp1, *fp2;
char ch;
fp1 = fopen("new.txt", "w");
fputs("This is the new file 12",fp1);
fclose(fp1);
fp1 = fopen("new.txt", "r");
fp2 = fopen("new1.txt", "w");

while ((ch=fgetc(fp1))!=EOF)
{
if(isdigit(ch))
{
fputc((int)(ch*ch), fp2);
}

}

printf("File copied Successfully!");
fclose(fp1);
fclose(fp2);
}

new1.txt 的预期内容为 144

new1.txt文件的实际内容是aÄ

最佳答案

你的做法是错误的。您没有将整个数字相乘。所以你首先需要找到文件中的整个数字。一个简单的方法是将所有字符存储在一个数组中并保留长度:

 while ((ch=fgetc(fp1))!=EOF)
{
if(isdigit(ch))
{
storeDigit[gotDigit] = ch; // keep ref
gotDigit += 1; // keep length
}
}

然后您可以使用 strtol 函数重建整数:

int digit = (int) strtol(storeDigit, NULL, 10);

现在你可以计算这个数字的平方,然后使用前面的数组将 int 结果转换为 char 数组:

digit = digit * digit;
sprintf(storeDigit, "%d", digit);

最后,只需将结果写入文件即可:

int i = 0;
while(storeDigit[i] != '\0')
{
fputc(storeDigit[i], fp2);
i++;
}

关于c - 运行以下文件处理 C 程序时,为什么输出不符合预期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48742667/

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