1. 程式人生 > >【C語言】編寫函式實現庫函式atoi,把字串轉換成整形

【C語言】編寫函式實現庫函式atoi,把字串轉換成整形

//編寫函式實現庫函式atoi,把字串轉換成整形
#include <stdio.h>
#include <string.h>
int my_atoi(const char *src)
{
	int flag=1;
	int sum=0;
	while (*src)
	{
		if (*src == ' ')
			src++;
		else if (*src == '+')
		{
			src++;
			flag = 1;
		}
		else if(*src == '-')
		{
			src++;
			flag = -1;
		}
		else if(*src >= '0'&&*src <= '9')
		{
			sum = sum * 10 + (*src - '0');
			src++;
		}
		else
		{
			return 0;
		}
	}
	sum = sum*flag;
	return sum;
}
int main()
{
	printf("%d\n", my_atoi(" +12345"));
	printf("%d\n", my_atoi(" -12345"));
	printf("%d\n", my_atoi("+12345"));
	printf("%d\n", my_atoi("-12345"));
	printf("%d\n", my_atoi("123  45"));
	printf("%d\n", my_atoi("234  5"));
	printf("%d\n", my_atoi(""));
	printf("%d\n", my_atoi("123ab"));
	return 0;
}

相關推薦

C語言編寫函式實現函式atoi字串轉換整形

//編寫函式實現庫函式atoi,把字串轉換成整形 #include <stdio.h> #include <string.h> int my_atoi(const char *

C語言編寫一個折半查詢函式

#include <stdio.h> int zheban(int x,int arr[],int left,int right) { while(left<=right) {

C語言編寫一個函式實現兩個數的交換 詳細解答

今天在用函式寫兩數交換的時候發現有點小挫折,然後經過多次查詢驗證才發現是因為地址不對的緣故,我在此放出兩種交換的方法,先發錯誤的如下:#include <stdio.h> void swap(int a,int b) { int temp=a; a

C語言編寫函式實現:100-200素數的輸出

    這裡面,先要理解素數如何求得,可用自己除以2到自己的前一位,根據餘數情況判斷是素數還是合數。優化:(1)從101開始,每次自加2,這樣提高效率一倍。(2)一直除以自己的平方根也可。#include<stdio.h> #include<math.h&g

C語言編寫一個函式將一個數字字串轉換這個字串對應的數字(包括正浮點數、負浮點數)

//編寫一個函式,將一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數) //例如:“12.34“ 返回12.34. " -12.34" 返回12.34 #include<

c語言編寫程式打印出以下形式的楊輝三角形

楊輝三角形 可以將楊輝三角形的值放在一個方形矩陣的下半三角中,如需列印7行楊輝三角形,應該定義等於或大於7x7的方形矩陣,只是矩陣的上半部分和其餘部分並不使用。 楊輝三角形具有以下特點: (1)第一列和對角線上的元素都為1; (2)除第一列和對角線上的元素之外,其他的元素的值均

C語言編寫一個程式顯示當前時間。

#include<sys/time.h> #include<time.h> #include<stdio.h> int main() {struct tm *ptm;time_t ts;char tim[50];ts = time(NUL

c語言遞迴實現n的k次方

問題描述: 如題。 分析: 1.n的k次=n*n*n*……*n(k個n),用遞迴的思想來講,就等於2.n的k次=n*(n的(k-1)次方) 程式碼如下: #include<stdi

C 語言結構體相關 的 函式 指標 陣列

.作者 : 萬境絕塵.結構體概述 : 結構體是 多個 變數的集合, 變數的型別可以不同;-- 可進行的操作 : 結構體可以進行 拷貝 賦值操作, 可以作為 函式引數 和 函式返回值;1. 結構體的基本使用結構體宣告 : struct 結構標記 {結構成員} 普通變數;-- 結

c語言設圓半徑r = 1.5圓柱高h = 3求圓周長圓面積圓球表面積圓球體積圓柱體積

要求scanf輸入資料,並有相應文字說明 #include<stdio.h> int main() { float r,h,pi=3.141592 ; printf("請輸入圓半徑r和圓柱高h:"); scanf("%f%f",&r,&h); printf(

C語言ASCII碼的數字轉字母字母轉數字的方法

#include <stdio.h> int main(){ //輸入字母,再輸出字母的方法 printf("輸入字母,再輸出字母的方法\n"); char c1,c2; scanf("%c,%c",&

c語言給出三角形的三邊長求三角形面積

設三角形三邊長為a、b、c,並滿足約束條件三邊之和大於第三邊,面積為Area 則: 其中 C語言程式碼: #include <stdio.h> #include <math.h> int main() {     double a

C語言統計隨機數中數字出現個數並列印直方圖

實現功能:生成二十個隨機數。統計二十個數中,0-9數字出現的次數,並列印成直方圖 #include<stdio.h> #include<stdlib.h> #define N 20 int a[N],b[10]; void gen_rand

C語言自己編寫程式實現strrchr函式即在給定字串中找特定的字元並返回最後出現的位置

//自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置 #include <stdio.h> #include <string.h> char

C語言自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。

<pre name="code" class="cpp">//自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。 #include <stdio.h>

c語言利用指標模式實現字串函式(strlen、strcat、strstr、strcpy、strcmp、memcpy、memove)

模擬實現strlen int my_strlen(const char *p) { assert(p != NULL); char *s = p; while (*p) { p++; } r

C語言字串函式實現

求字串的長度 strlen 長度不受限制的字串函式 strcpy strcat strcmp 長度受限制的字串函式 strncpy strncat strncmp 字串查詢 strc

C語言模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回

//模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回 #include <stdio.h> //#include <string.h> #includ

C語言使用可變引數實現函式函式引數的最大值。

求若干個引數的最大值,我們假定第一個可變引數為最大值,定義為max,將之後的每一個可變引數和第一個可變引數相比較,始終在max裡存放的是最大值。 但是這裡需要注意,每一次呼叫va_arg,都會指向下一個可變引數,因此我們需要將其值儲存在臨時變數裡,以防指向錯誤。   #includ

C語言標準字串函式整理

strcmp 字串比較 函式原型 extern int strcmp(const char *s1,const char *s2); 說明 C/C++函式,比較兩個字串 設這兩個字串為str1,str2, 若str1==str2,則返回零; 若str1<