【发布时间】:2020-12-19 10:58:32
【问题描述】:
我正在尝试使用以下代码将右括号附加到从用户那里获取的字符串的末尾
int main( void )
{
char charArray[ 20 ];
fgets( charArray, 20, stdin );
charArray[ sizeof( charArray ) / sizeof( charArray[ 0 ] ) ] = ')';
printf( "%s", charArray );
}
但如果我输入:4+5,输出只是:4+5 而不是:4+5)
我什至尝试了以下变体,以防万一
int main( void )
{
char charArray[ 20 ];
int n;
fgets( charArray, 20, stdin );
n = sizeof( charArray ) / sizeof( charArray[ 0 ] );
charArray[ n ] = ')';
printf( "%s", charArray );
}
但它不起作用。所以我通过这样做消除了对 sizeof 的需要
int main( void )
{
char charArray[ 20 ];
int i = 0;
do{
scanf( "%c", &charArray[ i ] );
++i;
} while( charArray[ i - 1 ] != '\n' );
charArray[ i - 1 ] = ')';
printf( "%s", charArray );
}
但是我将来可能需要 sizeof ,所以我想知道我做错了什么。而且 fgets 和 sizeof 的使用似乎比 scanf 更直接和简洁,并且使用神秘的 [ i - 1 ] 下标来做。 请告诉我 sizeof 方法:我的代码有什么问题?
【问题讨论】:
-
charArray[ sizeof( charArray ) / sizeof( charArray[ 0 ] ) ] = ')';根据定义写入超出数组范围。 -
你在操作字符串,
strlen的使用呢?
标签: arrays c string character sizeof