目标: - 如下图所示打印A3B5 .. AAABBBBB
我通过以下代码实现了这一目标: -
#include <stdio.h>
#include <conio.h>
void main(){
char char1[2],*ptr_char,c;
int number[2],*ptr_number,i,j=0,k=0;
ptr_char = char1;
ptr_number = number;
printf("Enter character string\n");
for(i=0;i<2;i++)
scanf("%c",&char1[i]);
printf("Enter number array\n");
for(i=0;i<2;i++)
scanf("%d",&number[i]);
for(i=0;i<ptr_number[j];i++)
printf("%c",ptr_char[k]);
j++;
k++;
for(i=0;i<ptr_number[j];i++)
printf("%c",ptr_char[k]);
getch();
}
///////////////////////////////////////////////////////////
现在我必须采用一个阵列,在这个阵列中可以使用我的A3B5,而不是采用两个阵列。
但是我无法像那样采取阵列。
我想将A3B5放在单个阵列中。 这可能吗?
答案 0 :(得分:1)
你可以说:
char csrc[]= "A3B5" ;
这里的问题是3和5不是数字,它们是字符。因此,您必须将“3”转换为3.您有多种选择,包括sscanf
和atoi
。正如其他人所建议的那样,立即读入整个字符串,它将在char
数组中,然后将其分解为您想要的单独部分。
答案 1 :(得分:1)
检查此代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int count = 0, i = 0;
char temp = 0;
char ip[16] = {0};
char filter[8] = {0};
int num[8] = {0};
printf("Enter input :\t");
scanf("%s", ip);
for (count = 0, i =0; count < strlen(ip); count++, i++)
{
filter[i] = ip[count]; //take out the character to print
count++;
temp = ip[count]; //read the number of print iteration as a character
num[i] = atoi(&temp); // convert "n" [charater] to n [int]
}
for (count = 0; count < strlen(ip)/2 ; count++)
{ //print loop
for (i = 0; i < num[count]; i++)
printf("%c\t", filter[count]);
printf("\n\n");
}
return 0;
}
样品运行和o / p
[sourav@localhost test]$ ./a.out
Enter input : S2G5
S S
G G G G G
[sourav@localhost test]$