GCC 3.3.4 中的 char 数组声明错误

发布于 2024-11-05 19:24:36 字数 698 浏览 2 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

戒ㄋ 2024-11-12 19:24:36

怎么样:

scanf("%c", &b[i]);

scanf()需要知道变量的地址,以便它可以修改它。

How about:

scanf("%c", &b[i]);

scanf() needs to know the address of the variable, so that it can modify it.

相思故 2024-11-12 19:24:36
#include <cstdio>

显然,您正在使用 C++ 进行编码

#include <stdlib.h>

哦!等待。毕竟是C。
@codex:决定你使用什么语言

using namespace std;

哦!它是C++。 我的回答没有考虑我不知道的 C++ 细节。

int p[100], b, bc;
char bb[100];

如果您可以避免使用全局变量,您的代码将更容易处理。

int main () {


        printf("Enter Count : ");
        scanf ("%d", &bc);
        for (b = 1; b <= bc; b++ ) {

惯用的方式是for (b = 0; b < bc; b++)。使用惯用的方式,您不需要在循环内减 1 来访问数组索引。

            printf("Enter a char and integer: ");
            // scanf ("%c%*c %d", &bb[b-1], &p[b-1]);

scanf() 是出了名的难以正确使用。
无论如何,"%d" 转换说明符已经丢弃了空格,因此您可以删除奇怪的东西;还有一个 ENTER 等待上次 scanf 调用。在格式字符串中使用空格可以消除它。

            scanf (" %c%d", &bb[b-1], &p[b-1]);
            printf ("\n Your Entries =>  %c,  %d", bb[b-1], p[b-1]);
        }


    return 0;
}

玩得开心!

#include <cstdio>

Apparently, you're coding in C++

#include <stdlib.h>

Oh! Wait. It is C after all.
@coderex: make up your mind what language you're using

using namespace std;

Oh! It is C++. My answer does not consider the C++ specifics which I don't know.

int p[100], b, bc;
char bb[100];

If you can avoid using global variables, your code will be easier to deal with.

int main () {


        printf("Enter Count : ");
        scanf ("%d", &bc);
        for (b = 1; b <= bc; b++ ) {

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.

            printf("Enter a char and integer: ");
            // scanf ("%c%*c %d", &bb[b-1], &p[b-1]);

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 last scanf call. Using a space in the format string gets rid of it.

            scanf (" %c%d", &bb[b-1], &p[b-1]);
            printf ("\n Your Entries =>  %c,  %d", bb[b-1], p[b-1]);
        }


    return 0;
}

Have fun!

浪漫之都 2024-11-12 19:24:36

错误是,它在输入整数值后将“输入键”读取为换行符。

为了避免这种情况,我使用了 %*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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文