1

如何分别读取六个数字,然后附加它们?

例如:

我想输入以下数字: 2 3 6 , 7 5

预期的输出将是:“236,75”。

我必须只用一个循环(读取数字)来完成,而且我必须用 char 类型读取数字。

这是我到目前为止所拥有的:

#include <stdio.h>

int main()
{
    char c;
    char string [6];

    printf("Introduce a number\n");

    int i = 0;
    while (i <=5) {
        scanf("%c", &c);
        string[i] = c;
        i++;
    }

    printf("%c\n",string);

}
4

3 回答 3

1

尝试这样的事情:

char string [7];

printf("Introduce a number\n");

int i = 0;

while(i <=5){

    scanf("%c", &c);
    string[i] = c;
    i++;
}

string[i] = '\0';

//printf("%s", string);

我在字符串 [6] 中添加了 '\0' 字符,以防万一您需要它来打印值。

另外,我建议您阅读有关从标准输入获取输入时清理输入缓冲区的内容。希望能帮助到你。

于 2013-11-04T00:16:10.637 回答
0

对于初学者,请确保您int main()实际上返回的是一个整数。

#include <stdio.h>

int main()
{
    char c;
    char string[7];
    char* stringy = string;

    printf("Introduce a number\n");

    int i = 0;
    while (i <=5) {
        scanf("%c", &c);
        string[i] = c;
        i++;
    }
    string[i] = '\0';

    printf("%s\n",stringy);

    return 0;

}

您还想使用%s格式说明符打印整个字符串。这也意味着您需要空终止您的字符串,这可以通过将数组中的最后一个字符设置为\0.

还要确保你的数组有 7 个索引而不是 6 个,所以一切都可以适应。

于 2013-11-04T00:54:51.927 回答
0
#include <stdio.h>

int main()
{
    char c;
    char string [7];

    printf("Introduce a number\n");

    int i = 0;
    while (i <=5) {
        scanf("%c\n", &c);
        string[i] = c;
        i++;
    }
    string[i] = '\0';

    printf("result: %s\n",string);
    return 0;
}

C 字符串以空字符结尾,即'\0'. 因此,您应该始终将空字符作为最后一个字符附加到字符串,因为它决定了字符串的结尾。因此该行string[i] = '\0';是必要的(在 while 循环结束时,值i将是 6,因此指向字符数组的最后一个元素)。

对您的代码的另一个更正是最终的printf(). 您将格式指定为字符格式 ( "%c"),它将仅输出字符串的第一个字符。您应该将其更改"%s"为打印整个字符串。

该程序应该可以工作,因为它是有效的 C 代码。如果您在使用此代码时遇到问题,那么它是特定于平台的。我无法在 VS2012 上运行此代码,但设法在 GNU C 编译器上运行它。尝试在在线 C 编译器上运行代码,它应该可以正常工作。

于 2013-11-04T01:13:57.140 回答