因为血腥的年代而被困在这上面。似乎没有简单的方法来做到这一点!
请一些帮助,谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char (char *s, const int len) {
{
static const char alphanum[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"123456789";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[(sizeof(alphanum) - 6)];
}
s[len] = 0;
memmove(s+pos+1, s+pos, len-pos+1);
s[pos]='-';
puts(s);
}
int main (void)
{
//print the random digits but in the middle need to insert - e.g
//FJ3-FKE
}
答案 0 :(得分:3)
有两种简单的方法。
如果您只需要打印那些东西,您可以在输出中添加短划线,如下所示:
fwrite(s, pos, stdout);
putchar('-');
puts(s+pos);
或者,如果用于s
的缓冲区大到足以容纳一个char
,则可以使用memmove
为短划线留出空间,添加短划线和然后打印字符串:
memmove(s+pos+1, s+pos, len-pos+1);
s[pos]='-';
puts(s);
(所有这些都假设pos
是插入破折号的位置)
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void func(char *s, int len, int pos) {
static const char alphanum[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"123456789";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand()%(sizeof(alphanum)-1)];
}
s[len] = 0;
if(0 < pos && pos < len){
memmove(s+pos+1, s+pos, len-pos+1);
s[pos]='-';
}
}
int main (void){
char s[10];
srand(time(NULL));
//print the random digits but in the middle need to insert - e.g
//FJ3-FKE
func(s, 6, 3);
puts(s);
return 0;
}