在C中附加数字

时间:2013-11-04 00:11:52

标签: c

如何分别读取六位数,然后追加它们?

例如:

我想输入以下数字: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);

}

3 个答案:

答案 0 :(得分: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'字符,以防万一你需要打印这些值,例如。

另外,我建议您在从stdin获取输入时阅读cleaning the input buffer。希望它有所帮助。

答案 1 :(得分: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格式说明符打印整个字符串。这也意味着您需要null终止字符串,这可以通过将数组中的最后一个字符设置为\0来完成。

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

答案 2 :(得分: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编译器上运行它。尝试在online C compiler上运行代码,它应该可以正常工作。