gpt4 book ai didi

c - 文件处理+字符操作

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

这是我的代码。

输入的数字是

1234567890

这段代码的输出应该是

(123)456-7890

但输出不同。我的代码中有任何建议或错误修复吗?

#include <stdio.h>
#include <ctype.h>

int main()
{
char ch;
int a[100], s[100], str, k, i;
FILE *fp;

fp = fopen("number.c", "r");
while ( ( ch = fgetc(fp) ) != EOF )
{
k = 0;
a[k] = '(';
a[k+4] = ')';
a[k+8] = '-';
for (i = 0; s[i] != '\0'; i++)
{
if (isdigit(s[i]))
{
a[k++] = s[i];
if (k == 3)
{
k++;
}
}
printf("%s", a);
}
fclose(fp);
return 0;
}
}

最佳答案

这看起来像是计算机科学第一年类(class)的作业。如果是这样,我会建议在办公时间找个助教讨论一下。

代码存在几个问题:

  1. 您的外循环打算从文件中一次读取一行并填充 s 数组。相反,它一次读取一个字符并填充 ch 变量。
  2. 正如评论中提到的,将字符放入数组时,您没有考虑“-”。
  3. 您没有终止 a 数组中的字符串。
  4. 在 c 中对此可能有不同的思想流派,但我会使用 s 和 char[] 而不是 int[]。

我的建议是拿出一张纸并为每个变量留出空间。然后逐行读取代码并按照您期望计算机执行所编写内容的方式操作变量。如果您可以阅读所写内容,而不是您期望代码执行的操作,那么问题就会变得显而易见。

关于c - 文件处理+字符操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32353930/

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