Re: [問題] 遇到換行結束輸入 in C
※ 引述《FrankTrjpp (請給我前叉)》之銘言:
: 很抱歉問了一個笨問題
: 可是剛才打關鍵字沒找到相關方法 (不然就是找到C++的 = =a )
: 就是
: 我要讀入一串數字(是int 不超過10個)
: 可能只有2個也可能有10個,結束輸入於換行符號
: 請問要怎麼寫呢?
: 找到最接近的方法是gets()讀入string
: 然後用sscanf去讀
: 不過因為沒用過sscanf所以剛才sigmentation fault了XD
: 有更好的方法或者是正確的使用法嗎@@
: 繼續辜狗中...
這種測資讀法比較正常的方法是 gets() + strtok():
#include<cstdio>
#include<cstring>
#define N 50
int main()
{
int n,num[N];
char s[N];
while( gets(s) )
{
int count = 0;
for( char *p = strtok(s," "); p ; p = strtok(NULL," "), count++ )
sscanf( p,"%d",&num[count] );
printf("%d\n",count);
for( int i=0;i<count;i++ )
printf("%d ",num[i]);
puts("");
}
}
附上一種特別的用法,用 sscanf() 的回傳值計算個數
#include<cstdio>
#include<cstring>
#define N 50
int main()
{
int n,num[N];
char s[N];
while( gets(s) )
{
int count = 0;
n = sscanf( s,"%d%d%d%d%d%d%d%d%d%d",
&num[0],&num[1],&num[2],&num[3],&num[4],
&num[5],&num[6],&num[7],&num[8],&num[9] );
printf( "%d\n",n );
}
}
不過缺點就是後面的引數列要一個一個打,
數字不大的時候不失為一個好方法啦~
//此處 n 就是成功讀入的變數個數
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.161.124.7
推
05/05 16:24, , 1F
05/05 16:24, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):