GCC 3.3.4 中的 char 数组声明错误
int main () {
char b[100];
for (int i = 1; i <= 10; i++ )
scanf ("%c%*c", b[i]);
}
但收到错误“格式 argumentmnt 不是指针”
我如何声明一个数组以获取用户的所有值?
编辑:
#include <cstdio>
#include <stdlib.h>
using namespace std;
int p[100], b, bc;
char bb[100];
int main () {
printf("Enter Count : ");
scanf ("%d", &bc);
for (b = 1; b <= bc; b++ ) {
printf("Enter a char and integer: ");
scanf ("%c%*c %d", &bb[b-1], &p[b-1]);
printf ("\n Your Entries => %c, %d", bb[b-1], p[b-1]);
}
return 0;
}
这是我的源代码。
int main () {
char b[100];
for (int i = 1; i <= 10; i++ )
scanf ("%c%*c", b[i]);
}
but am getting the error 'Format arguemnt is not a pointer'
How can i declare an array to get all values form the user?
EDIT :
#include <cstdio>
#include <stdlib.h>
using namespace std;
int p[100], b, bc;
char bb[100];
int main () {
printf("Enter Count : ");
scanf ("%d", &bc);
for (b = 1; b <= bc; b++ ) {
printf("Enter a char and integer: ");
scanf ("%c%*c %d", &bb[b-1], &p[b-1]);
printf ("\n Your Entries => %c, %d", bb[b-1], p[b-1]);
}
return 0;
}
This is my source code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
怎么样:
scanf()
需要知道变量的地址,以便它可以修改它。How about:
scanf()
needs to know the address of the variable, so that it can modify it.显然,您正在使用 C++ 进行编码
哦!等待。毕竟是C。
@codex:决定你使用什么语言
哦!它是C++。 我的回答没有考虑我不知道的 C++ 细节。
如果您可以避免使用全局变量,您的代码将更容易处理。
惯用的方式是
for (b = 0; b < bc; b++)
。使用惯用的方式,您不需要在循环内减 1 来访问数组索引。scanf()
是出了名的难以正确使用。无论如何,
"%d"
转换说明符已经丢弃了空格,因此您可以删除奇怪的东西;还有一个 ENTER 等待上次scanf
调用。在格式字符串中使用空格可以消除它。玩得开心!
Apparently, you're coding in C++
Oh! Wait. It is C after all.
@coderex: make up your mind what language you're using
Oh! It is C++. My answer does not consider the C++ specifics which I don't know.
If you can avoid using global variables, your code will be easier to deal with.
The idiomatic way is
for (b = 0; b < bc; b++)
. Using the idiomatic way, you won't need to subtract 1 inside the loop to access the array indexes.scanf()
is notoriously difficult to use correctly.Anyway the
"%d"
conversion specifier already discards whitespace so you can remove the strange stuff; also there's an ENTER pending from the lastscanf
call. Using a space in the format string gets rid of it.Have fun!
错误是,它在输入整数值后将“输入键”读取为换行符。
为了避免这种情况,我使用了 %*c
scanf ("%c%*c %d%*c", &bb[b-1], &p[b-1]);
谢谢你们大家。
Error was, its reading the "enter key" as newline char after an integer value enter.
to avoid this I used %*c
scanf ("%c%*c %d%*c", &bb[b-1], &p[b-1]);
thank you everybody.