我一直在試圖編寫一個程序,它會讀取空格分隔整數的序列,直到遇到換行符爲止。我的方法是將輸入讀爲字符串,並使用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
。我只想讀取字符串並將輸入的字符串的字符轉換爲Integer數組的條款a[0] = 1 a[1] = 2 a[3]= 3 a[4] = 4
。我可能認爲a[k] = atoi(s)
會引用字符串中的第一個元素,但不會引用其他元素。因此,每次迭代都會分配a[k] = 1
。獲得期望的結果?
在此先感謝。
使用'與fgets()'和'的strtok()',更好的和強大的。 –
是否有最大線長? –
我猜整數的數量是在一定的範圍內,但不是字符串的長度@Michael Walz –