将char转换为整数

时间:2016-05-06 05:11:49

标签: c char int output

我正在尝试输入一系列数字(即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;
}

4 个答案:

答案 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 );
}