我正在尝试使用printf函数从传入函数的指针中打印字符串。
printf("%s\n", strng[1]);
strng由调用者传入。它是一个前面有空格的字符串,我想删除那个空白区域。因此,我有以下代码。
for(i=0; i<slength -1; i++) {
printf("%s\n", strng[1]);
tstr[i] = strng[i+1];
printf("%s\n", tstr);
}
tstr[slength] = 0;
它一直给我一个访问冲突错误,我不明白为什么。如果我取出printf行,那么我可以运行代码,但返回字符串tstr总是在它的末尾有一个额外的字符。输出看起来像这样。
bp185080
9
bªM
bpM
bp1
bp18─
bp185
bp1850K
bp18508
bp185080=::=::\
bp185080=
如何摆脱空白区域并且没有额外的角色?
答案 0 :(得分:4)
您基本上是在尝试将角色用作指针。将strng[1]
替换为&strng[1]
或strng + 1
。
答案 1 :(得分:1)
你的循环对printf有几个问题;
for(i=0; i<slength -1; i++) {
printf("%s\n", strng[1]); // Prints a character with a format of a string,
// you may want to use %c here instead to print
// the second char, or strng+1 to print the
// string starting with the second character.
tstr[i] = strng[i+1];
printf("%s\n", tstr); // Prints tstr before terminated with \0, which
// is undefined behaviour, may very well crash.
}
tstr[slength] = 0;
似乎你循环一次迭代太少而不能处理最后一个字符,你可能想做for(i=0; i<slength; i++)
。