我想使用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;
}
}
答案 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比较)
如果有帮助,请告诉我