读取文件并仅打印数字的C程序

4

我有一个包含字符串和数字的文件。例如,我的文件Store-1.txt包含“coffee 2mug -4”。

我需要编写一个C程序,通过读取文件并将数字保存到数组中来存储这些数字(即2和-4)。

我无法确定如何做到这一点。有什么建议吗?

代码如下:

#include <stdio.h>


int main(void)
 {
 char c,ch;
 int flag=0;
  FILE *fptr=fopen("Store-1.txt","r");
  if(fptr)
 {
 while((c=fgetc(fptr))!=EOF)
 {
 if(c=='-' || c== '+')
     {
      ch=c;
      flag=1;
     }
 if(c>='0' && c<='9')
  {
    if(flag == 1)
     { 
       printf("%c",ch); flag =0;
      }
   printf("%c",c);
  }
   }
   }
  else
printf("Error : file not found");

  system("pause");
 }

你需要我的代码吗?让我知道,这样我就可以上传它。 - PSN
1
只需将其放入您的问题中。 - Olaf Dietsche
1
@user1805494,是的,我们需要你的代码... - logoff
@user1805494:fclose(fptr); 在最后...我将其添加到我的最近编辑中,请查看我的答案。 - Omkant
2个回答

4
使用fgetc()函数读取文件,并在若 c>='0' && c<='9'时使用printf()打印。以下是完整的可工作代码:
#include <stdio.h>
int main()
{
char c,ch;
int flag=0;
FILE *fp=fopen("file.txt","r");
if(fp)
{
    while((c=fgetc(fp))!=EOF)
    {
     if(c=='-' || c== '+')
         {
          ch=c;
          flag=1;
          continue;
         }
     if(c>='0' && c<='9')
      {
        if(flag == 1)
         {
           printf("%c",ch); flag =0;
          }
       printf("%c",c);
      }
     else
        flag=0;
    }
}
else
    printf("Error : file not found");

fclose(fp);}

是的,没问题:但是 OP 希望在这里了解基本概念。所以我没有考虑所有可能的测试用例。 - Omkant
它在我的编译器上运行。 - Omkant
请运行并复制粘贴我的这个答案,然后尝试。如果同意,请接受答案。 - Omkant
是的,它有效。你能否稍微修改一下,将数字存储在一个数组中? - PSN
1
你可以做到的,伙计,只要想一想……编程不像仅仅向他人询问答案那样简单。你只能通过实践和自我思考来学习。 - Omkant
显示剩余6条评论

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

int main(void)
{
   int ch, n, sign;

   sign = 1;
   ch = getchar();
   while (ch != EOF) {
      if (ch == '-') {
         sign = -1;
         ch = getchar();
      } else if (isdigit(ch)) {
         n = 0;
         do {
            n = n * 10 + ch - '0';
            ch = getchar();
         } while (isdigit(ch));
         n *= sign;
         /*store n*/
      } else {
         sign = 1;
         ch = getchar();
      }
   }
   return 0;
}

这将错误地吞噬跟在数字后面的负号(例如“2-3”)。尽管不清楚在这种情况下OP想要发生什么。 - Wiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接