求助C语言问题
请编写函数fun,函数的功能是:在字符串中的所以数字字符前加一个$字符#include<stdlib.h>#include<math.h>/*runthisprogram...
请编写函数fun,函数的功能是:在字符串中的所以数字字符前加一个$字符
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[])
{int i;
char *s,c[100];
s=c;
printf("请输入字符串\n");
scanf("%s",s);
/*void fun(*s);*/
for(i=0;i<100;i++)
{
printf("%s",c[i]);
}
printf("\nEND");
void fun(char *s)
{char a[100];
int i,j;
i=0;
j=0;
while (s[i]!='\0')
{
if ((s[i]>='0')&&(s[i]<='9'))
{a[j]='$';
a[j+1]=s[i];
j=j+2;
}
else
{a[j]=s[i];
j=j+1;
}
i++;
}
a[j]='\0';
}
return 0;
}
有点问题,求教 展开
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[])
{int i;
char *s,c[100];
s=c;
printf("请输入字符串\n");
scanf("%s",s);
/*void fun(*s);*/
for(i=0;i<100;i++)
{
printf("%s",c[i]);
}
printf("\nEND");
void fun(char *s)
{char a[100];
int i,j;
i=0;
j=0;
while (s[i]!='\0')
{
if ((s[i]>='0')&&(s[i]<='9'))
{a[j]='$';
a[j+1]=s[i];
j=j+2;
}
else
{a[j]=s[i];
j=j+1;
}
i++;
}
a[j]='\0';
}
return 0;
}
有点问题,求教 展开
3个回答
展开全部
#include <stdio.h> // 此处不需要包括 math.h
#include <stdlib.h>
#define MAX_LEN 100 // 定义一个最大字符串长度
int main(int argc, char *argv[]) {
// 定义原始字符串 s 和输出的字符串 c
char * s, * c;
// 声明一下 fun 函数
char * fun(char * s);
// 为字符串 s 分配足够的内存空间
s = malloc(MAX_LEN * sizeof(char));
printf("请输入字符串\n");
// 此处不使用 scanf 是因为它无法将空格写入字符串
gets(s);
// 将 c 指向函数返回的字符串 a 所占用的空间
c = fun(s);
printf("结果为:\n");
// 打印出转换后的字符串 c
printf("%s", c);
printf("\nEND");
// 释放 s 和 c 所占用的内存空间
free(s);
free(c);
return 0;
}
char * fun(char *s) {
// 定义一个字符串 a
char * a;
int i = 0, j = 0;
// 为 a 分配足够的空间,这里应该是 s 的两倍,
// 因为当 s 全是数字时,结果长度会是原来的两倍。
a = malloc(2 * MAX_LEN * sizeof(char));
// 这里是正确的
while (s[i] != '\0') {
if ((s[i] >= '0') && (s[i] <='9')) {
a[j] = '$';
a[j + 1] = s[i];
j = j + 2;
} else {
a[j] = s[i];
j = j + 1;
}
i++;
}
a[j] = '\0';
// 返回 a 所指的内存空间,供 c 使用
return a;
}
结果如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询