我正在编写一个程序,该程序将字符串中的数字乘以2。我想我可能做得很好(这个概念),但是我不断出错,无法编译。这真的使我感到困惑,我不知道错误在哪里。
#include <stdio.h>
char* dvostruko(char* string)
{
int temp2=0;
char* ret = string;
while(*string!='\0') {
if(*string>='0'&&*string<='9') {
char* p = string;
int temp=0;
while(*p>='0' && *p<='9') {
temp=temp*10 + *p - '0';
p++;
}
int temp3=temp*2;
if(temp3/10 > temp/10) {
while(temp3!=0 && p >= string ) {
temp2=temp3%10;
*p = '0' + temp2;
temp3=temp3/10;
p--;
}
} else {
p--;
while(temp3!=0 && p >= string ) {
temp2=temp3%10;
*p = '0' + temp2;
temp3=temp3/10;
p--;
}
}
}
string++;
}
return ret;
}
int main()
{
char brojevi[100]="Brojevi 123 i brojevi 223.";
dvostruko(brojevi);
printf("%s",brojevi);
return 0;
}
输入:“数字2、4、75。”
输出:“数字4,8,150。”
答案 0 :(得分:0)
您必须停在停下来的地方,然后从那里继续读数字。
我为此添加了q
您的检查数字位数的测试错误,只需检查第一位数字是否大于4
并按所有char即可将char添加到字符串中。警告,未检查缓冲区大小,因此您可能会溢出它。
#include <stdio.h>
void push(char *s) {
char prev, cur;
prev = ' ';
do {
cur = *s;
*s = prev;
prev = cur;
} while (*s++ != '\0');
}
char* dvostruko(char* string)
{
int temp2=0;
char* ret = string;
while(*string!='\0') {
if(*string>='0'&&*string<='9') {
char* p = string;
char *q;
int temp=0;
int one_more = *p > '4';
while(*p>='0' && *p<='9') {
temp=temp*10 + *p - '0';
p++;
}
q = p;
int temp3=temp*2;
if(one_more) {
push(p);
while(temp3!=0 && p >= string ) {
temp2=temp3%10;
*p = '0' + temp2;
temp3=temp3/10;
p--;
}
} else {
p--;
while(temp3!=0 && p >= string ) {
temp2=temp3%10;
*p = '0' + temp2;
temp3=temp3/10;
p--;
}
}
string = q;
}
string++;
}
return ret;
}
int main()
{
char brojevi[100]="Brojevi 523 i brojevi 223.";
dvostruko(brojevi);
printf("%s\n",brojevi);
return 0;
}
输出:
Brojevi 1046 i brojevi 446.