在字符串中(zhōng)提取首個(gè)整數并區分正負 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 技術(shù)分享 >

在字符串中(zhōng)提取首個(gè)整數并區分正負

發表時間:2020-10-19

發布人:葵宇科技

浏覽次數:34

在字符串中(zhōng)提取首個(gè)整數并區分正負

// 字符串轉數值.cpp: 定義控制台應用程序的入口點。
//

#include "stdafx.h"
#include"conio.h"
int convert(char* arr)
{
	int i, j, k;
	int m = 0;//用于記錄數字的真實位數
	int n = 0;//用于記錄需要輸出的數字從字符串的第幾位開始記錄位數
	int F = 0;
	int  A, count = 0, B = 0;
	while (arr[count] != '\0')//用于計算字符串的位數
		count++;
	//printf("count is %d\n", count);
	for (i = 0; i < count; i++)
	{
		if ((int)arr[i] == 45 && (int)arr[i + 1] > 47 && (int)arr[i + 1] < 58)//判斷這個(gè)數是否為負數并标記
		{
			n++;
			F = 1;
			continue;
		}
		if ((int)arr[i] < 48 || (int)arr[i]>57)//記錄需要輸出的數字從第幾位開始
		{
			n++;
			continue;
		}
		if ((int)arr[i] > 47 && (int)arr[i] < 58 && (int)arr[i + 1] > 47 && (int)arr[i + 1] < 58)//記錄需要輸出的數字的位數
			m++;
		if ((int)arr[i] > 47 && (int)arr[i] < 58 && ((int)arr[i + 1] < 48 || (int)arr[i + 1]>57))//記錄需要輸出的數字的位數并标記需要輸出的數字是否即将結束
		{
			m++;
			break;
		}
	}
	//printf("%d\n", n);
	//printf("%d\n", F);
	//printf("%d\n", m);
	k = m - 2;
	for (i = n; i < n + m; i++)//利用n與n+m确定在數組的哪裡開始檢索需要輸出數字,在哪裡結束。
	{
		A = 1;
		if (i != n + m - 1)
		{
			for (j = k; j >= 0; j--)
				A *= 10;
			//printf("%d\n", A);
			B += A * ((int)arr[i] - 48);
		}
		else
			B += A * ((int)arr[i] - 48);
		k--;
	}
	if (F == 1)
		return -B;
	return B;
}
int main()
{
	char arr[] = "***-012-345";
	printf("%d\n", convert(arr));
	_getch();
	return 0;
}

相關(guān)案例查看更多