程序停止工作。 即使我只放了一个int。 我尝试了很多不同的方法,但无法弄清楚出了什么问题。 我试图输入由空格分隔的整数。 可能没有任何整数。
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int i,j=0;
int b[100];
char a[100];
fgets(a,100,stdin);
for(i=0;i<strlen(a);i++)
{
b[i] = atoi(a[j]);
j=j+2;
}
for(i=0;i<strlen(b);i++)
{
printf("%d ",b[i]);
}
}
答案 0 :(得分:1)
这是atoi的原型,你必须使用一个字符数组但是你只发送一个字符。atoi(str[i])
int atoi(const char *str)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int val;
char str[20];
strcpy(str, "98993489");
val = atoi(str);
printf("String value = %s, Int value = %d\n", str, val);
return(0);
}
答案 1 :(得分:1)
执行以下操作:
for(i = 0; i < strlen(a); i += 2)
{
b[j] = a[i];
j++;
}
答案 2 :(得分:1)
虽然 atoi() 只接受一个字符串参数,或者你可以说常量字符指针和 str[i] 只不过是一个指向字符数组单个字符的指针。 因此,一旦我们传递了 atoi(str[i]) ,这意味着我们正在向函数传递一个字符,这将产生错误。 因此,您必须从要将子字符串转换为数字的位置传递该特定字符的地址,即 atoi(&str[i])。