0

我想使用 C 程序查找每行中的字符数。如果我在一行中有一个语句,它会工作得很好。但是,如果多个语句意味着,它会在其后添加一个 0。我怎样才能修改我的代码来实现我所需要的?提前致谢。

fp=fopen("chumma.c","r");
while((c=getc(fp))!=EOF)
{
    cn++;
    if((c=='\n') || (c==';'))
    {
         if((cn-1)==0)
            em++;
        n++;
        printf("\nNo. of char in line %d : %d\n",n,(cn-1));
        ll[n-1]=cn-1;
        cn=0;
    }
}
4

5 回答 5

0

试试这个,我没有编译它,但它应该可以工作。

char buffer[1024];
fp=fopen("chumma.c","r");
while(fgets(buffer, 1024, fp))
{
    n++;
    cn = strlen(buffer);
    printf("\nNo. of char in line %d : %d\n",n,cn);
}
于 2012-12-14T05:44:28.300 回答
0

使用 fgets:

char buffer[MAX_BUFFER];

fp=fopen("chumma.c","r");
while (fgets(buffer, MAX_BUFFER, fp)) {
    cn = strnlen(buffer,MAX_BUFFER);
    n++;
    printf("\nNo. of char in line %d : %d\n",n, cn);

}

类似的东西。

于 2012-12-14T05:47:13.887 回答
0

以下代码应该适合您。虽然我还没有编译。

#define SIZE 1024
char buffer[SIZE];
char * pch;
int cn = 0;

fp=fopen("chumma.c","r");
while (fgets(buffer, SIZE, fp)) 
{
  pch = strtok (buffer,";");
  while (pch != NULL)
  {
    cn += strnlen(pch,SIZE);
    pch = strtok (NULL, ";");
  }
    n++;
    printf("\nNo. of char in line %d : %d\n",n, cn);
  cn = 0;
}

希望这可以帮助。

于 2012-12-14T05:59:17.493 回答
0

虽然下面的代码看起来有点绕,但它确实有效。如果有人可以简化它,请告诉我。谢谢。

while((c=getc(fp))!=EOF)
{
  cn++;
  if(c==';')
  {
    n++;
    printf("\nNo. of char in line %d : %d\n",n,cn);
    ll[n-1]=cn;
    cn=0;
    flag=1;
  }

  if(c=='\n')
  {
    if(flag==1)
    {
      flag=0;
      cn--;
    }

    else{
      if((cn-1)==0)
         em++;
      n++;
      printf("\nNo. of char in line %d : %d\n",n,(cn-1));
      ll[n-1]=cn-1;
      cn=0;
    }
  }
}
于 2012-12-14T07:21:36.477 回答
0

好的,我真的忘记了代码,但我仍然可以给你一个非常合理的逻辑,这肯定会帮助你。如果您听说过字符指针,那么没问题。

1) 使用 fopen 打开文件。2)开始一个循环直到 endofile EOF 并将文件的全部内容填充到一个数组中。3) 创建一个具有该数组起始位置的字符指针,并将其放入循环中,直到 '\0' //该数组的结束字符。4)在每次迭代中使用指针的值,您可以计算每个元素的样子(数字或字母--ASCII比较)

让我知道这是否有帮助

于 2012-12-14T08:27:41.323 回答