[英]How do I get this file the first number of each line to increment it? And what about the first line not being skipped? In C
[英]How do I get number of characters in each line?
我需要獲取每一行中的字符數,然后將其粘貼到另一個文件(學校項目)中,但是甚至我的原型也無法正常工作。
我已經嘗試繼續查看問題,將其粘貼到另一個文件中后是否可以解決,但是它沒有用,所以我回到了這一點。
int main()
{
FILE *fw;
FILE *fr;
int i = 0;
char c;
fr = fopen("vstup.txt","r");
fw = fopen("vystup.txt","w");
while ((c = getc(fr)) != EOF)
{
while ((c = getc(fr)) != '\n')
{
i++;
}
printf("%d\n", i);
}
}
必須將c
聲明為int
,而不是char
。 EOF
可能不是有效的char
值,因此不等式可能永遠成功。
您不應兩次調用getc()
。 您永遠不會檢查第一個調用的結果是否是換行符。
閱讀換行符后,需要將i
設置為0
,否則將繼續將下一行的長度添加到上一行。
僅在讀取換行符時才打印長度,而不是每次循環時都打印長度。 而且如果最后一行不是以換行符結尾,則應在循環之后打印其長度; 如果i
完成時i
不為0
,就可以知道發生了這種情況。
由於應將長度寫入另一個文件,因此應使用fprintf()
。
while ((c=getc(fr)) != EOF) {
if (c == '\n') {
printf("%d\n", i);
i = 0;
} else {
i++;
}
}
if (i != 0) {
fprintf(fw, "%d\n", i);
}
您不需要嵌套循環。 您需要以任何一種方式將計數器歸零,因此您最好只使用if
而不是一會兒:
int main()
{
FILE *fw, *fr;
int count = 0;
int c;
fr = fopen("vstup.txt","r");
fw = fopen("vystup.txt","w");
while ((c = getc(fr)) != EOF) {
count++;
if(c == '\n') {
fprintf(fw, "%d\n", count);
count = 0;
}
}
fclose(fr);
fclose(fw);
}
此版本會將換行符視為有效字符。
請注意, c
必須是int
,而不是char
,以便它可以容納getc
返回的每個字符值以及EOF
,而不是字符值。
並且不要忘記關閉文件!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.