用串S拷贝出另一个串T,对串T从头至尾扫描,对非数字字符原样写入串S,对于数字字符先写一个$符号再写该数字字符,最后,在S串尾加结束标志。使用此方法是牺牲空间,赢得时间。
#include <stdio.h>int fun(char *s)
{
char t[80]
int i, j
for(i=0 s[i] i++) /*将串s拷贝至串t*/
t[i]=s[i]
t[i]='\0'
for(i=0,j=0 t[i] i++)
/*对于数字字符先写一个$符号,再写该数字字符*/
if(t[i]>='0' && t[i]<='9')
{
s[j++]='$'
s[j++]=t[i]
}
/*对于非数字字符原样写入串s*/
else
s[j++]=t[i]
s[j]='\0' /*在串s结尾加结束标志*/
return 0
}
int main()
{
char s[80]
printf ( "Enter a string:" )
scanf ("%s", s) /*输入字符串*/
fun(s)
printf ("The result: %s\n", s) /*输出结果*/
return 0
}
代码如下:
#include <stdio.h>#define MAX 20 // 每行最大字符数
#define MAX_LINE 1000 // 文件最大行数
char lines[MAX_LINE][MAX]
int main()
{
int i, count = 0
// 打开文件 abc.txt
FILE *pf = fopen("d:\\abc.txt", "r+")
// 读取文件内容到 lines 中
while (!feof(pf)) {
fscanf(pf, "%s", lines[count++])
}
// 移动文件指针到文件开始
fseek(pf, 0, SEEK_SET)
// 修改文本并保存到文件中
for (i = 0 i < count i++) {
fprintf(pf, "12月日期%s号\n", lines[i])
}
// 关闭文件
fclose(pf)
return 0
}
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)