[英]How to find the length of the longest line of a text file in C
我知道這應該是易於實現的功能。 我需要解析一個.txt文件並將其放入2D數組中。 為了初始化2D數組,我將需要知道行數和最長行中的字符數。 我相信我有一個可以給我行數的函數。 我似乎無法讓我的功能找到最長的行的長度。
到目前為止,這是我的代碼。 我知道這是錯誤的(因為它不起作用)。
int getrow(FILE *mapfile)
{
int chars =0 ;
int longest = 0;
int Hlen;
char *line;
char *buf;
line = malloc(1000); //1000 is set to be max chars in line
line = fgets(line, 1000, mapfile); //get first line of file
while(line)
{
chars = 0;
buf = strtok(line, " ");
while(buf)
{
chars++;
buf = strtok(NULL, " ");
}
(chars > longest)?(longest = chars):(longest==longest); //If the number of characters scanned is longer than previous long, save new longest line
line = fgets(line, 1000, mapfile);
}
Hlen = longest;
free(line);
return Hlen;
}
我正在解析的文件是:
###################
# # F####################################
# # E# #
# ##### ################################## #
# # # #
############################ ################# # #
# # # #
# ################## # # #
# ##### # # #
# ############### # # # #
# # # # # #
################### ########################## # #
#L # # #
# # # ######################## #
# # # #
############ # # ##########################
# # # #
# ####### #
# # # #
# # # #
# # # S#
#########################
正如Lashane指出的那樣,您可以使用strlen
來獲得
行中的字符。
刪除該三元語句。 您需要做的只是檢查chars
是否大於longest
,如果是,則更新longest
。
不需要Hlen
變量。 longest
返回
獎勵:也不需要分配內存。 考慮一下,您實際上不需要保存行的副本,只需要遍歷文件的每個字符並計算換行符之間的字符。 您可以為此使用fgetc 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.