如何读取一系列空格分隔的整数,直到遇到换行符?

我一直在尝试编写一个程序来读取一系列空格分隔的整数,直到遇到换行符。我的方法是将输入作为字符串读取并使用atoi()将字符串转换为整数。 这是我的方法:

 #include #include #include 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如何获得所需的结果?

提前致谢。

这可能对你有帮助

 #include  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; }