字串分割 提取數字

qq_22543355發表於2020-10-02
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int a[100];
  char str[100];
  scanf("%s",str);
  int n=strlen(str);
  for(int i=0;i<n;i++)
  {if(str[i]<='0'||str[i]>'9')
     str[i]=' ';
          } 
  int k=0;
  char *temp=strtok(str," ");
  while(temp)
  {a[k]=atoi(temp);
   k++;
   temp=strtok(NULL," ");
             }
  for(int i=0;i<k;i++)
  {printf("%d\n",a[i]);
          }
  system("PAUSE");	
  return 0;
}

執行:

在這裡插入圖片描述
strtok的用法注意下,第一次分割返回的temp是099 是分割掉的那部分
strtok 引數是NULL時候 從上一次分割後的結束位置開始 繼續分割

099輸出是99嗎??

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int a=099; 
  printf("%d",a); 
  system("PAUSE");	
  return 0;
}

在這裡插入圖片描述報錯了 我通過atoi函式 試試

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int a=atoi("099"); 
  printf("%d",a); 
  system("PAUSE");	
  return 0;
}

在這裡插入圖片描述
成功了 這個atoi 函式真靈活

相關文章