新手求字符串中替换一个字符的小程序

时间:2021-09-05 15:01:03
需要一个c程序(不是c++),把所有字符串中的~都换成字符‘0’。

字符串是按照下面程序读出来的,然后读出来的~要都换成0。怎么做呢?


/* The function reads stings from a txt file. */
int
readevent( FILE *pFile, char **pgc, char **name, char **rag, char **decg, char **absmag, char **dist)
{
void *pgc1, *name1, *rag1, *decg1, *absmag1, *dist1;
char *temp, *temp1;            
int i=0, n=1024;       /* n is buffer. */

if ( !(*pgc=(char *)malloc(n*50))||
     !(*name=(char *)malloc(n*50))||
 !(*rag=(char *)malloc(n*50))||
 !(*decg=(char *)malloc(n*50))||
 !(*absmag=(char *)malloc(n*50))||
 !(*dist=(char *)malloc(n*50))||
 !(temp=(char *)malloc(n*50)) )    /* assume the longth of all strings less than 300 */
printf("memory error\n");

while (!feof(pFile))
{ fscanf(pFile, "%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|%[^|]|", *pgc+i*50, *name+i*50, *rag+i*50, *decg+i*50, temp, temp, temp, temp, temp, temp, temp, temp, temp, *absmag+i*50, *dist+i*50, temp, temp, temp);
i++;
if (i==(n-1))                              /*buffer is not long engouh */
{

9 个解决方案

#1


一个while循环,遍历字符串即可
if(buf[i]=='~')
  buf[i]='0';

#2



void repl(char *s)
{
    for (char *p = s; *p != '\0'; ++p)
    {
        if (*p == '~')
            *p = '0';
    }
}

#3


该回复于2010-10-15 16:21:47被版主删除

#4


你看就觉得是作业题=-=!

#5


 for (char *p = s; *p != '\0'; ++p)
{
    if (*p == '~')
       *p = '0';
}

#6


老师挺可怜的,看到的作业都是抄的

#7


引用 6 楼 wyfwx 的回复:
老师挺可怜的,看到的作业都是抄的


抄完作业还不结贴给分

#8


请判断fscanf的返回值

#9


是作业中的一部分啦。不过发现文件读取的时候自动就给赋值0了。所以就没用这个了。。
另外第一次用这个论坛,不小心给点了扔个板砖。。。。单元不会有问题。。。

刚学c语言,很不熟悉,过去一直用mathematica,结果现在的项目过去的人都用c来处理,我也*跟着用。麻烦各位大侠帮着看看新问题

http://topic.csdn.net/u/20101015/06/48c93834-9f4e-4e48-8b27-5835f7c6779f.html?seed=149524747&r=70102803#r_70102803

#1


一个while循环,遍历字符串即可
if(buf[i]=='~')
  buf[i]='0';

#2



void repl(char *s)
{
    for (char *p = s; *p != '\0'; ++p)
    {
        if (*p == '~')
            *p = '0';
    }
}

#3


该回复于2010-10-15 16:21:47被版主删除

#4


你看就觉得是作业题=-=!

#5


 for (char *p = s; *p != '\0'; ++p)
{
    if (*p == '~')
       *p = '0';
}

#6


老师挺可怜的,看到的作业都是抄的

#7


引用 6 楼 wyfwx 的回复:
老师挺可怜的,看到的作业都是抄的


抄完作业还不结贴给分

#8


请判断fscanf的返回值

#9


是作业中的一部分啦。不过发现文件读取的时候自动就给赋值0了。所以就没用这个了。。
另外第一次用这个论坛,不小心给点了扔个板砖。。。。单元不会有问题。。。

刚学c语言,很不熟悉,过去一直用mathematica,结果现在的项目过去的人都用c来处理,我也*跟着用。麻烦各位大侠帮着看看新问题

http://topic.csdn.net/u/20101015/06/48c93834-9f4e-4e48-8b27-5835f7c6779f.html?seed=149524747&r=70102803#r_70102803