【发布时间】:2019-01-23 19:37:44
【问题描述】:
我正在从标准输入读取文件权限字符串,我想创建另一个字符串,该字符串将保存所有字符,除了用户在标准输入中输入的字符串中的第一个字符。
int main(){
char allPermissions[10];
char permissions[9];
scanf("%s", allPermissions);
for(int i = 1; i <= 9; i++) {
char temp = allPermissions[i];
//printf("%c", temp);
permissions[i-1] = temp;
}
printf("%s\n", permissions);
return 0;
}
如果用户输入:drwx------
然后我希望程序输出:rwx------
但我得到的是:rwx-----drwx-------
我也不完全确定为什么。
【问题讨论】:
-
你没有设置字符串的最终
\0 -
什么意思?
-
@Ôrel 它被复制了。
-
char allPermissions[10];有足够的空间容纳 9 个字符和空终止符。由于您在scanf中向其中写入了 10 个字符,因此您调用 undefined behavior -
@WeatherVane 我数了
drwx------中的 10 个字符- 4 个字母和 6 个破折号