我一直在尝试编写一个程序来读取一系列空格分隔的整数,直到遇到换行符。我的方法是将输入作为字符串读取并使用atoi()
将字符串转换为整数。
这是我的方法:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
int a[100],i=0,k=0;
char s[100];
//Read the first character
scanf("%c",&s[i]);
//Reads characters until new line character is encountered
while(s[i]!='\n'){
i+=1;
scanf("%c",&s[i]);
}
//Print the String
printf("\nstring = %s\n",s);
//Trying to convert the characters in the string to integer
for(i=0;s[i]!='\0';i++){
if(isdigit(s[i]))
{
a[k] = atoi(s);
k+=1;
}
}
//Printing the integer array
for(i=0;i<k;i++)
printf("%d ",a[i]);
return 0;
}
但是当我输入输入1 2 3 4
时,输出为1 1 1 1
。我想要的只是读取字符串并将输入的字符串的字符转换为整数数组a[0] = 1 a[1] = 2 a[3]= 3 a[4] = 4
的字符。我可能认为a[k] = atoi(s)
引用字符串中的第一个元素而不是其他元素。所以每次迭代都要分配a[k] = 1
。如何获得所需的结果?
提前致谢。
答案 0 :(得分:0)
这可能会对你有所帮助
#include <stdio.h>
int main() {
const int array_max_size = 100;
char symb;
int arr[array_max_size];
int array_current_size = 0;
do {
scanf("%d%c", &arr[array_current_size++], &symb);
} while (symb != '\n');
// printing array
return 0;
}