c语言去掉字符串前边的0后如何存储到一个新字符串里 c语言如何只删除一个字符串一个数前面的0?

www.zhiqu.org     时间: 2024-06-12

一、算法分析:

要去掉字符串前面的0,首先就要统计出字符串开始处有多少个0,也就是从第几位开始字符串元素非0.

然后就可以利用strcpy函数,将从非零位置起始的字符串复制到新的字符串中了。 

二、参考代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char s[100], d[100];
    char *p=s;
    scanf("%s",p);//输入字符串。
    while(*p=='\0') p++;//在p指向为字符0时自加,这样退出循环后,p指向第一个非0元素。 
    strcpy(d,p);//将p开始的字符串复制到d中。 
    printf("%s
", d);//输出结果。 
    return 0;
}


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STR_TO_FIND "test..."

void main(void)
{
FILE *fp_src = NULL;
FILE *fp_dst = NULL;
char *file_array = NULL;
char *tmp = NULL;
unsigned int file_size = 0;
unsigned int str_len = strlen(STR_TO_FIND);

fp_src = fopen("D:/test_src.txt","r");
if(fp_src == NULL){
goto err;
}

fp_dst = fopen("D:/test_dst.txt","w+");
if(fp_src == NULL){
goto err;
}

fseek(fp_src,0,SEEK_END);
file_size = ftell(fp_src);
file_array = (char*)malloc(file_size+1);
file_array[file_size] = 0;
fseek(fp_src,0,SEEK_SET);
if(!fread(file_array,1,file_size,fp_src)){
goto err;
}
if(str_len){
tmp = strstr(file_array,STR_TO_FIND);
while(tmp){
char *move_pos = tmp + str_len;
unsigned int i = 0;
unsigned int move_len = file_size - (move_pos - file_array);
for(;i<move_len;i++){
tmp[i] = move_pos[i];
}
tmp[i] = 0;
file_size -= str_len;
tmp = strstr(file_array,STR_TO_FIND);
}
}
fwrite(file_array,1,file_size-1,fp_dst);
err:
if(fp_src){
fclose(fp_src);
fp_src = NULL;
}
if(fp_dst){
fclose(fp_dst);
fp_dst = NULL;
}
if(file_array){
free(file_array);
}
return;
}

C语言中字符串输出如何去掉最前面的未知个数个0?~

i为4,*p=s+3;p++;
p-i,*p=s
printf("%s
",p-i);是输出一个字符串,这个字符串从数组s开始,直到这个数组结束完,数据的结束标志和字符串是一样的,故可到数组最后一个最就不打下面的字符了。

char s[] = "0000123023";
int i, j;
for (i = 0; s[i] == '0'; i++);
for (j = 0; s[j]=s[i]; i++, j++);


#敖放剑# C语言中怎么提取一个字符串从第3个字母开始的其余的字符并保存到另一个字符串中 -
(13327146971): 首先你这种定义字符串的方式是错误的 应该这样定义 char *x="abcdefg",这样定义就是定义了一个字符串变量, 而你的定义char x 只是定义x为字符变量,在赋值的时候只能赋给x单个字符,如x='a', 要搞清楚 字符 和 字符串 的概念 至于你说的提取字符,可如下方法 for(i=0; i{ y[i]=x[i+3]; } 这样就可以了,就是简单的循环语句赋值,把x[]数组第三个字符'd'(第0个字符时'a'),付给数组y[0].

#敖放剑# C语言如何删除文件里面的一个字符串,并把剩下的内容重新保存为新的文件 -
(13327146971): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include <stdio.h> #include <stdlib.h> #include <string.h> #...

#敖放剑# C语言怎么保存字符串中一个字符的前一个字符C语言怎么保存字符串中一个字符的前一个字符
(13327146971): 知道那个字符的位置的话,就通过下标保存前一个阿!比如在字符串a 的第三个位置,那么他前一个下标就是3阿,char b =a [3]就保存啦,不知道那个字符的位置就用比较法找一下 还有一个办法就是把那个字符的地址赋值给一个指针,然后指针自减1就是你要保存字符的地址了,然后你懂的!

#敖放剑# 怎样去掉字符串中的结束字符\0 -
(13327146971): 以str字符串为例 则应该是:str[strlen(str)]='\n'这样就把结束字符去掉,变成转义字符'\n'因为它是转义字符,且根据它的特殊含义,不会影响结果,当然,你也可以填充其他字符

#敖放剑# C语言字符指针如何去掉\0 -
(13327146971): 不太明白你的意思,我想你是想问如何将字符指针指向的字符串中的\0去掉,具体方法:可以通过指针访问该字符串的每一个元素,判断其是否为\0; int i=0;char a[100]; int *p="abcdef"; while((*(p+i)!='\0') { a[i]=*(p+i); i++; } 这样a[100]中就保存了没有\0的字符串,可以根据指针指向的字符串的长度来定义a的下标.

#敖放剑# c语言怎么删掉字符串的前几个字符 -
(13327146971): #include <stdio.h> void del_chr( char *s, char ch ) { char *t=s; //目标指针先指向原串头 while( *s != '\0' ) //遍历字符串s { if ( *s != ch ) //如果当前字符不是要删除的,则保存到目标串中*t++=*s; s++ ; //检查下一个字符 }*t='\0'; //置目标串结束符.}...

#敖放剑# C语言是怎么存储字符串的?是不是通过和字符数组类似的形式? -
(13327146971): c语言中没有字符串的储存形式像 string arr;是c++中才出现的,c语言中的字符串是储存在数组中的而且以'\0'为结束标志

#敖放剑# C语言实现去掉字符串行首和行尾的空字符,但字符之间的空字符保留.请详细解释一下这段代码的作用. -
(13327146971): 第1个循环,变量i的值是字符串最后一个字符的下标开始,每次循环减1,即向前逐个字符进行判断,条件是isspace(str[i]),如果是空格就再次减1,否则不是空格则退出循环,退出循环时,i指向字符串末尾第1个非空格的字符,字符串需要在这...

#敖放剑# c语言怎么储存两个字符串 -
(13327146971): 实例程序如下,不明白就追吧!刚才看错题目了,如下调用void input_string(char str[]);函数,就可以存入空格,输入用回车结束!#include void input_string(char str[]); void main() { char ch,i,Astr[100],Bstr[100]; printf("请两个测试字符...

#敖放剑# C语言 - 删除字符串中的字符. -
(13327146971): 在你的delchar()函数里面,进行覆盖那里应该改成 *p = *(p+1) 如果是*p = *p + 1结果是 先取出 p指向的内存中的字符,然后该字符加1之后再赋值给p所指向的内存. 列入 *p = a; 那*p = *p +1 结果是 *p = b; 而*p = *(p + 1) 是p指针先指向p前面的一个内存单元,再用*取出该内存单元的值,然后赋值给 p 所指向的内存单元 *p