计算C中一行中的char数

时间:2012-12-14 05:25:30

标签: c file-io

我想使用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;
    }
}

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);

}

类似的东西。

答案 2 :(得分: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;
}

希望这有帮助。

答案 3 :(得分: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;
    }
  }
}

答案 4 :(得分:0)

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

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

如果有帮助,请告诉我