如何分别读取六位数,然后追加它们?
例如:
我想输入以下数字: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);
}
答案 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上运行代码,它应该可以正常工作。