我尝试构建会删除&#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
答案 0 :(得分:1)
您需要在模板字符串的末尾添加换行符,因此"%d: %s\n"
,因为您通过切断';'
s所在位置的所有内容来删除原始换行符中的换行符是
此外,还有an index()
function使得无需遍历这些行。