当我末尾没有空行时,为什么 fgets() 不断跳过最后一个字母? [重复]

问题描述 投票:0回答:1

我想获取每一行并将其放入我的数组中。当我在文件末尾有一个空行时,这是有效的,但我需要能够处理所有行,而末尾没有一行。当我读取文件时,最后一行 ax 末尾缺少 x 。这是使用的文件:

read ax
mul 2 ax
print ax

the file I get with my code:
read ax
mul 2 ax
print a

这就是我现在所拥有的。我该如何解决这个问题?

int row = 100;
int columns = 100;
char operation[row][columns];
FILE *fp = fopen(argv[1],"r");
//populates matrix of assembly code
while(fgets(operation[i],columns, fp)!=NULL){
  operation[i][strlen(operation[i])-1] = '\0';
  i++;
} numberOfLines = i;

for(int i = 0; i < numberOfLines;i++){
   printf("%s\n",operation[i]);

}

c fgets
1个回答
1
投票
operation[i][strcspn(operation[i], "\r\n")] = '\0';

这将设置第一个 ' ' 或者 ' ' 到 '

https://en.cppreference.com/w/c/string/byte/strcspn

© www.soinside.com 2019 - 2024. All rights reserved.