我試圖將字符串S作爲輸入。這裏字符串S可以包含多個整數值,後跟一個字母表。該程序必須根據先前的整數值擴展字母表。如何從字符串中讀取多個數字號碼
考慮輸入:4a5h
的量,輸出:aaaahhhhh
,即4倍a
倍和5倍h
同樣對於輸入:10a2b
輸出:aaaaaaaaaabb
,即10倍a
和2倍b
這是我的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char s[1000], alp[1000];
int num[1000];
int n = 0;
int i, j, k, m;
k = 0;
scanf("%[^\n]s", s);//Reads string until newline character is encountered
for (i = 0; i < strlen(s); i++) {
if (isalpha(s[i])) {
alp[n] = s[i]; // alp[] stores the alphabets
n += 1;
} else {
num[k] = s[i] - '0';// num[] stores the numbers
k += 1;
}
}
for (i = 0; i < k; i++) {
for (m = 0; m < num[i]; m++)
printf("%c", alp[i]);
}
return 0;
}
但是,通過此代碼,我無法讀取2或3或N位數字。因此,如果輸入是100q1z
那麼alp[]
陣列很好,但num[]
陣列不包含100
和1
,因爲它的元素代替1
和0
是它的元素。
如何糾正這種代碼?
1)'k'應'0'作爲初始值。 – BLUEPIXY
感謝那@BLUEPIXY –