我正在尝试输入一系列数字(即123456789
),然后每次输出一个数字(即1, 2, 3, ... , 9
)。但是,在str[9]
之后的9之后,输出值将是随机数,例如-48, 32, 9, -112
。如何确保输出数字在9处停止,因为我输入的最后一个数字是9?
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
int n,num[100];
scanf("%s", str);
for(n=0;n<100;n++)
{
num[n] = str[n] - '0';
printf("%d\n", num[n]);
}
return 0;
}
答案 0 :(得分:0)
您从public class PropertyData {
private int id;
private String propName;
private String propValue;
private String engineName;
private String desc;
private Date createdAt;
private String createdBy;
private Date updatedAt;
private String updatedBy;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPropName() {
return propName;
}
public void setPropName(String propName) {
this.propName = propName;
}
public String getPropValue() {
return propValue;
}
public void setPropValue(String propValue) {
this.propValue = propValue;
}
public String getEngineName() {
return engineName;
}
public void setEngineName(String engineName) {
this.engineName = engineName;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
}
输入的字符串可能少于100个字符,请使用scanf
来获取其大小:
strlen
请注意,您应该使用int main(void)
{
char str[100] = {0};
int num[100];
size_t len, n;
scanf("%s", str);
len = strlen(str);
for(n=0;n<len;n++)
{
num[n] = str[n] - '0';
printf("%d\n", num[n]);
}
return 0;
}
,而不是int main(void)
。
答案 1 :(得分:0)
您需要记录输入字符串的长度,使用 strlen(str),并将该值存储在一个变量中,最多将字符串长度旋转循环。就是这样:
在这里,我做了:
#include<stdio.h> #include<string.h> int main() { char str[100] = {}; int n = 0,count = 0,num[100] = {}; scanf(" %s", str); count = strlen(str); for(n = 0; n < count; n++) { num[n] = str[n] - '0'; printf("%d\n", num[n]); } return 0; }
答案 2 :(得分:0)
你可以比较ascii值。
#include<string.h>
#include<stdio.h>
int main(){
char str[100];
int n,num[100]=0;
scanf("%s", str);
while(str[n]<58 && str[n]>47){
num[n] = n*num[n]+str[n];
n++;
}
printf("%d\n", num[n]);
return 0;
}
答案 3 :(得分:0)
好像你应该一次处理一次输入字符而不是字符串。这将消除对看似任意的100个字符限制的需要。您可以在打印前验证字符是否为数字,在找到第一个非数字时终止循环。
#include <ctype.h>
char c;
scanf( "%c", c );
while (isdigit(c))
{
printf("%c\n", c );
}