c语言字符串删除的问题

问题描述

c语言字符串删除的问题

将字符串s1中与字符串s2中匹配的字符删除,并输出。
我写的程序如下:
#include
main()
{
char s1[10],s2[10];
gets(s1);
gets(s2);
int i,j,k;
for(i=k=0;s1[i]!='n';i++)
{
for(j=0;s2[j]!='n';j++)
if(s1[i]!=s2[j])
s1[k++]=s1[i];
}
s1[k]='';
for(i=0;s1[i]!='';i++)
printf("%c",s1[i]);
return 0;
}
请问这个哪里有问题,请指正。谢谢!

解决方案

gets(char* buf)和fgets()都是以行为单位的读写函数,但是gets()函数不读入换行符,fgets()会读入。他们都是遇到换行符,就把输入内容放入
缓冲区。他们都会在结束的时候加上字符串结束符’’,所以你用gets()不会有换行符,还有一点,最好不要用gets()函数,它没有指定缓冲区
大小,最大只是系统提供的默认缓冲区大小,容易超过缓冲区大小从而造成程序崩溃

#include

int main()
{
char s1[10],s2[10],s3[10];
gets(s1);
gets(s2);
int i,j,k=0;

for(i=0;s1[i]!='';i++)
{
for(j=0;s2[j]!='';j++)
{
if(s1[i]==s2[j])
s3[k++]=s1[i];

}

}
s3[k]='';

for(k=0;s3[k]!='';k++)
printf("%c",s3[k]);
printf("n");
// printf("sakfn");

return 0;

}

解决方案二:

哦,这里是#include

解决方案三:

输出字符串不能用%s么,非要单个输出,gets和puts都是不安全的函数,建议不要使用

时间: 2024-11-08 19:25:15

c语言字符串删除的问题的相关文章

c语言-C语言字符串的处理问题不懂

问题描述 C语言字符串的处理问题不懂 去除字符串中间的*号列如:******ab***cdf**rty*******去除中间的*号字符串变为:******abcdfrty******* 程序如下: #include void fun( char a, char *h,char *p ) { char *q = a;//是把a的首地址给*q吗? int i = 0; while(q < h) { a[i] = *q; i++; q++; } while(q < p) { if(*q!='') {

字符串处理-求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例)

问题描述 求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例) Background Given an m by n grid of letters and a list of words, find the location in the grid at which the word can be found. A word matches a straight, uninterrupted line of letters in the grid.

Strsafe.h:更安全的C语言字符串处理函数

原文出处:Strsafe.h: Safer String Handling in C:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/strsafe.asp 在微软公司举行的Microsoft Windows Security Push 活动期间,一批测试者.程序管理经理和普通程序员共同决定要为 C 语言量身定制一套具有较高安全性的字符串处理函数,并且希望这些函数能被 Windows 程

c语言编程-关于C语言字符串的简单题求助

问题描述 关于C语言字符串的简单题求助 进行对输入的字符串重新排列,要求字母在前,数字在后,并不改变字母和数字之间的字符排列顺序. 解决方案 #include void main() { char a[10] = {0}, b[10] = {0}, c[10]={0}; int n = 0, m = 0, k = 0,f = 0; printf("输入字符串:"); gets(a); for(int j = 0; j < 10; j++) { if((a[j] >= 'a'

pat-PAT1009 c语言字符串问题 我写的程序输出时起始位置会多一个空格,如何改正才能没有空格

问题描述 PAT1009 c语言字符串问题 我写的程序输出时起始位置会多一个空格,如何改正才能没有空格 #include #include int main(){ int i,j=0,m,k=0; char sen[100]; char s[10][20]; gets(sen); m=strlen(sen)+1; for(i=0;i<m;i++){ if(sen[i]==''){ s[j][k]=''; k=0; j++; } if(sen[i]==' ') { s[j][k]=''; k=0;

c语言-C语言字符串数组定义问题

问题描述 C语言字符串数组定义问题 #include int main() { char *ptr[10]; 为什么这样运行时会出错? gets(ptr[0]); } #include int main() { char ptr[10][20]; 而这样运行时则没有问题? gets(ptr[0]); } char *p[10] 与 char p[10][20] 之间有什么不同? 还是说在这里是gets()函数用错了? 万分感谢! 解决方案 哥们,你的第一个定义的是数组指针,第二定义的是一个二维数

c语言-c 语言 字符串和 数组

问题描述 c 语言 字符串和 数组 char * a = "abc"; char a[4] = "abc"; 以上有什么区别和联系 解决方案 char * a = "abc"; 其实是 char 一个你看不见的变量[] = "abc"; char *a = 一个你看不见的变量; 解决方案二: 前者是一个字符指针,定义时仅分配了指针变量的空间,该指针指向一个字符串常量"abc"的首地址,a可修改(可做左值)但

c语言-C语言字符串问题 请指教

问题描述 C语言字符串问题 请指教 #include void main() { char *p="47340"; printf("%sn",*p); } 这个哪里有问题?谢谢. 解决方案 *p 是取值 p是地址,字符串的首地址就是字符串本身 解决方案二: 请使用下面的语句输入字符串. printf("%sn",); 解决方案三: *p不是访问的指针所指的内容? 解决方案四: char *p="47340"; -> ch

c语言-为什么用 char *s = &amp;amp;quot;test&amp;amp;quot; 定义的 C语言字符串不能使用下标?

问题描述 为什么用 char *s = "test" 定义的 C语言字符串不能使用下标? char *s = "test"; s[1] = 'E'; 用 char s[] = "test" 就能使用下标了,这两种是不一样的吗? 解决方案 不一样的,第一种里面"test"是字符串常量,存储在文本区,而s只是一个指针:第二种是局部变量,用来初始化s字符数组,存储在栈区 解决方案二: // 以下代码在gcc版本: // gcc ve