Mycode打印许多行,每个行有9个元素。如果行(第一个元素)以“d”开头,则不要打印行的其余元素。因此,如果您尝试ls-l | mycode,它将删除以“d”开头的行。但由于某些原因,元素左移一个,例如:

ls -l

drwxrwxrwx 2 alk lotus 35 Sep 23 19.00 directory1
-rwxrwxrwx 2 alk lotus 345 Sep 23 13.00 file1
drwxrwxrwx 3 alk lotus 245 Sep 23 19.20 directory2
drwxrwxrwx 24 alk lotus 15 Sep 23 12.00 directory3
-rwxrwxrwx 5 alk lotus 25 Sep 23 14.00 file2
-rwxrwxrwx 8 alk lotus 25 Sep 23 10.00 file3

ls -l | mycode

-rwxrwxrwx 2 alk lotus 345 Sep 23 13.00
file1 -rwxrwxrwx 5 alk lotus 25 Sep
23 14.00 file2 -rwxrwxrwx 8 alk lotus 25 Sep
23 10.00 file3

那么为什么file2 file1会下降呢?我想让那个文件留在他的位置上…在所有的位置都混在一起之后…请帮忙解决这个问题。。。
我的代码在这里:

最佳答案

代码中的逻辑似乎不正确。您要做的是删除以d开头的行,但是在代码中它会执行其他操作。
我将向您展示一个预期有效的示例,它将取代您的代码示例:

while (fgets(string, 1024, stdin))
    if (string[0] != 'd')
        printf("%s", string); // don't use puts cuz fgets would store the newline

关于c - 打印错误,字符位置混合,出了什么问题,循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26051051/

10-09 09:04