【发布时间】:2017-08-10 04:44:15
【问题描述】:
我正在尝试传递一个字符串 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
标签: c string integer string-formatting