输出位置正在从原始文本更改

时间:2016-03-05 01:01:18

标签: c

我尝试构建会删除&#39 ;;'以及随机文本或文档后面的文字。它有效,但不知何故,单词(输出)的位置似乎不再处于原始位置。是因为' \ 0'在我的代码?或者是其他东西?我无法弄明白。文本示例如下所示:

abcdefghijkl; qrwetyruiop

asdasasdasd; QWERTYUIOP

fgfghfghfgh; ASDFGHJKL

fhfghftytyt; 123456789

bnmbnmbnmb; qazwsxedc

我删除它的代码如下所示:

一些逐行读取的代码 int i; for(int i = 1; instructions [i]!=' \ 0&#39 ;; i ++)

    {
        if(instructions[i] == ';')

            {

                instructions[i] = '\0'; 

                break;
            }
    }
printf("%d: %s", i, instructions);
i++; 

当我编译并运行它时,输出的位置发生了变化,例如:

gcc -std = c99 -Wall something.c -o something.exe

./ something.exe

abcdefghijkl asdasasdasd fgfghfghfgh
     fhfghftytyt bnmbnmbnmb

预期输出是&#39 ;;'之前的字词。标志保持不变,就像这样:

abcdefghijkl

asdasasdasd

fgfghfghfgh

fhfghftytyt

bnmbnmbnmb

1 个答案:

答案 0 :(得分:1)

您需要在模板字符串的末尾添加换行符,因此"%d: %s\n",因为您通过切断';' s所在位置的所有内容来删除原始换行符中的换行符是

此外,还有an index() function使得无需遍历这些行。