-2
int main () {

   char b[100];
   for (int i = 1; i <= 10; i++ )
       scanf ("%c%*c", b[i]);
}

但我收到错误“格式争论不是指针”

如何声明一个数组以获取用户的所有值?

编辑 :

#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;
}

这是我的源代码。

4

3 回答 3

3

怎么样:

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

scanf()需要知道变量的地址,以便对其进行修改。

于 2011-05-07T13:42:12.550 回答
2
#include <cstdio>

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

#include <stdlib.h>

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

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"转换说明符已经丢弃了空格,因此您可以删除奇怪的东西;scanf最后一次通话中还有一个 ENTER 待处理。在格式字符串中使用空格可以消除它。

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


    return 0;
}

玩得开心!

于 2011-05-07T14:50:32.177 回答
0

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

为了避免这种情况,我使用了 %*cscanf ("%c%*c %d%*c", &bb[b-1], &p[b-1]);

谢谢大家。

于 2011-05-07T14:49:12.663 回答