c語言輸入字串內有陣列和非數字字元將

2021-05-04 13:25:59 字數 1699 閱讀 2147

1樓:問明

#include

#include

void output(char *s, int n);            //定義輸出函式

int main()

//輸出函式

void output(char *s, int n)for(j=0, printf("there is %d number in the string.\nresult: ", m); jprintf("\n");}

2樓:匿名使用者

void search(char *p1,double *p2,int *p3)

/* //1. 修改

else if(i!=0)//當遇到字串中的一個非整數的字元時,執行以下操作

else continue;//如果字串中的第一個字元就不是整數,

} //那麼就直接跳出本次迴圈進行下一個字元的檢測

// 2. 增加

if (j != 0)

/*// 3. 修改

*(p3)=n+1;//記憶檢測到的整數個數,「傳回」主函式

*/*(p3)=n;

}對你的**做了3處修改。分別說明如下:

1. 判斷條件的修改,原條件無法判斷兩個數字中間的非字元數大於1的情況

迴圈變數h由遞增改為遞減,因為陣列a中,下標從小到大分別表示的是從高位到低位,比如123儲存在a中,那麼a[0]儲存的是百位

增加了一個乘法,因為pow只能計算該位置的單位,而不能表示具體數值,比如321,pow只能計算出100 + 10 + 1

為什麼要減去'0',因為a中儲存的是字元,而不是整數。

2. 增加了一次迴圈,如果字串不是以非數字字元結尾,那麼,最後一次讀到陣列a中的資料則無法u取出

3. 函式第三個引數的賦值修改為n而不是n+1,每次讀完一個數字,n自動完成了加1,因此最後無需再對其進行加1操作

3樓:

if (*p>='0' && *p<='9')這一段中連續數字字元每處理一個就sum++;了,按要求是一個整數sum增1一次;char a[10]=;這個宣告也有問題,a的元素只有1位元組,絕大多數整都放不下。所以再沒有往下看,寫得也太複雜,下面提供一個作參考……

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"

#include "string.h"

int main(void){

char s="a123x56 17960?302tab5876";

int a[1000],i,j,k,ln=strlen(s);

for(j=k=i=0;i

4樓:鎏金閣

char cmix[100]="sdf34534hjkljk56365jhl huo4578bhj45t";

char *pchar=cmix;

int integer[10][16];//最多隻能10組數字,每組最多15個數字字元。

int j,i=0;//整數陣列下標

while(*pchar)//混合字串未結束j=0;//新組第一個數字

while(isdigit(*pchar)&&j<14)//*pchar是數字&&j<14

integer[i][j]='\0' ;//字串結尾標誌i++;//準備下一個數字組}

C語言字串陣列問題

c語言中,賦值 與 賦初值 又叫初始化 是不一樣的。在定義變數的同時賦值,叫賦初值,而定義後賦值就是普通的賦值了。你說的 不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列 這句話是說普通賦值的情況,也就是,不能定義一個字元陣列以後,再給他直接賦值。而 char s 12345 這個語句,是...

c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題

改用list吧.方法一是沒有new 沒有分配空間 方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.在c 中,陣列一般用來存放大小確定的資料.如果陣列大小未知,建議使用list lista new list a.add we messagebox.show a 0...

c語言輸入字串,將該字串中從第m個字元開始的全部字元複製到另字串

這樣 include include int main void copystr char char int int m char str1 20 str2 20 printf input string gets str1 printf which character that begin to c...