请问c语言如何在双引号内引用变量?

riliu85 2010-07-26 08:11:41
是这样的

我在读取文件的时候必须要引用变量

定义a=1
然后读取文件的时候要用
("c:\\a.bmp")来读取
但是双引号默认没办法啊
请教各位大大!
...全文
1406 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
laciqs 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 smith24122412 的回复:]
楼盖的那么高!但我觉得都不乍的 !!!!
首先楼主是一个计算机算法的小白
一个简单的问题被你描述成 "我在读取文件的时候必须要引用变量" 这么深奥的问题!!!
其实根本就是你算法设计有问题!!!

看我的算法
char filename[255] = "c:\\a.bmp";
然后你想改变那个字符???举例 你想改变'a'到'b'??
filename[5]='b';

不就得……
[/Quote]
你说的不错,但LZ想要的是数字,当然也可以这样:
'0'+i,但可移植性不高,而且不够灵活,i>9时就会出问题。
riliu85 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 smith24122412 的回复:]
楼盖的那么高!但我觉得都不乍的 !!!!
首先楼主是一个计算机算法的小白
一个简单的问题被你描述成 "我在读取文件的时候必须要引用变量" 这么深奥的问题!!!
其实根本就是你算法设计有问题!!!

看我的算法
char filename[255] = "c:\\a.bmp";
然后你想改变那个字符???举例 你想改变'a'到'b'??
filename[5]='b';

不就得……
[/Quote]


20L说的很对,那个函数可以解决这个问题,可能是你没理解清楚哦,跟我一开始一样,后来多谢12L指导
谢谢2L和12L!
yxl_xx 2010-07-26
  • 打赏
  • 举报
回复
人家已经解决了
sprintf()函数就能解决这个问题
smith24122412 2010-07-26
  • 打赏
  • 举报
回复
楼盖的那么高!但我觉得都不乍的 !!!!
首先楼主是一个计算机算法的小白
一个简单的问题被你描述成 "我在读取文件的时候必须要引用变量" 这么深奥的问题!!!
其实根本就是你算法设计有问题!!!

看我的算法
char filename[255] = "c:\\a.bmp";
然后你想改变那个字符???举例 你想改变'a'到'b'??
filename[5]='b';

不就得了吗?还搞什么“"我在读取文件的时候必须要引用变量”!!
LCR189 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangweiit 的回复:]
楼主可以这样

char filename[255] = "";
int a = 1;
sprintf(filename,"c:\\%d.bmp",a);

这样,filename就变成c:\1.bmp了

注意好用的sprintf
[/Quote]

高手!
riliu85 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 laciqs 的回复:]
另外是没办法直接在双引号中引用变量的,你必须想办法把你需要的数据加入字符串中。
想要证明无法直接在双引号中引用变量很简单,
证明如下:
假设有以下程序:
char h = 'c';
printf("hello, world\n");
假设可以直接在双引号中引用变量:
结果为:hcllo, world
可事实并不如此,
又∵编程语言要求无歧义,这种情况下无疑是存在歧义的,因为已经干……
[/Quote]

原来是这样,其他语言好像我去查能用+连接起来,不知道C有没有?
riliu85 2010-07-26
  • 打赏
  • 举报
回复
不过还是要补充下,就是其实我当初是想弄一个数组,用循环分别赋值每个元素编号为1-10000,因为我有10000张图片需要调用,这样我当初是想 getimage(&img,"b[i].bmp");这么用的其中
b[10000]是元素名称分别为1-10000元素
请问怎么做呢
laciqs 2010-07-26
  • 打赏
  • 举报
回复
另外是没办法直接在双引号中引用变量的,你必须想办法把你需要的数据加入字符串中。
想要证明无法直接在双引号中引用变量很简单,
证明如下:
假设有以下程序:
char h = 'c';
printf("hello, world\n");
假设可以直接在双引号中引用变量:
结果为:hcllo, world
可事实并不如此,
又∵编程语言要求无歧义,这种情况下无疑是存在歧义的,因为已经干扰了正常动作
又∵C语言是一门编程语言
∴C语言会消除歧义
∴无法直接在双引号中引用变量
riliu85 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 laciqs 的回复:]
引用 10 楼 riliu85 的回复:
引用 9 楼 laciqs 的回复:
引用 8 楼 riliu85 的回复:
5L,我觉得我不是这个意思,因为我的问题是双引号内引用变量,这样做法不是一样的吗,因为双引号内是不会判断你是变量还是指针吧?

看来你已经病入膏骨了,你的问题已经被2L解决了还不知道,不解释。


呵呵,没办法新手嘛,请解释下具体办法,这个问题对我很重要啊,具体要……
[/Quote]

我没理由发火啊,学习中老师就是上帝 呵呵

因为我用的是其他函数图形库,没认真去看,我以为是要按格式输入,一开始我也去掉双引号测试,结果粗心大意忘记放文件在c:\\1.bmp导致测试失败,以为不能这么用,后来我发现你说了我又试了一次,这次记住放文件了 终于成功了。

不过我是想问双引号内引用变量呢,去掉双引号就没意义了,本来是这么说的,但是既然可以了这个问题就不用了 嘿嘿,谢谢了
laciqs 2010-07-26
  • 打赏
  • 举报
回复
上面的代码少了个;,不好意思。
如果还不明白,就把getimage(&img, filename);去了看看打印出来什么了。
laciqs 2010-07-26
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
char filename[255];
int i;

for (i = 1; i <= 50; i++) {
sprintf(filename,"c:\\%d.bmp", i);
printf("%s\n", filename);
getimage(&img, filename)
}
return 0;
}

这样就可以批量处理编号为1-50的bmp文件。
laciqs 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 riliu85 的回复:]
引用 9 楼 laciqs 的回复:
引用 8 楼 riliu85 的回复:
5L,我觉得我不是这个意思,因为我的问题是双引号内引用变量,这样做法不是一样的吗,因为双引号内是不会判断你是变量还是指针吧?

看来你已经病入膏骨了,你的问题已经被2L解决了还不知道,不解释。


呵呵,没办法新手嘛,请解释下具体办法,这个问题对我很重要啊,具体要怎么连接起来呢
[/Quote]
你看到我说的话倒没发火,值得欣赏。
如果按你做,我就变成
getimage(&img, "filename")
你把filename两边的双引号去掉就好了,我在5L已经说了。
riliu85 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 laciqs 的回复:]
引用 8 楼 riliu85 的回复:
5L,我觉得我不是这个意思,因为我的问题是双引号内引用变量,这样做法不是一样的吗,因为双引号内是不会判断你是变量还是指针吧?

看来你已经病入膏骨了,你的问题已经被2L解决了还不知道,不解释。
[/Quote]

呵呵,没办法新手嘛,请解释下具体办法,这个问题对我很重要啊,具体要怎么连接起来呢
laciqs 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 riliu85 的回复:]
5L,我觉得我不是这个意思,因为我的问题是双引号内引用变量,这样做法不是一样的吗,因为双引号内是不会判断你是变量还是指针吧?
[/Quote]
看来你已经病入膏骨了,你的问题已经被2L解决了还不知道,不解释。
riliu85 2010-07-26
  • 打赏
  • 举报
回复
5L,我觉得我不是这个意思,因为我的问题是双引号内引用变量,这样做法不是一样的吗,因为双引号内是不会判断你是变量还是指针吧?
黑泡泡选手 2010-07-26
  • 打赏
  • 举报
回复
filename->变量
"filename"->字符串
laciqs 2010-07-26
  • 打赏
  • 举报
回复
严格来说字符串常量应该叫做字符串字面值,不好意思。
laciqs 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 riliu85 的回复:]
谢谢3L
不过这样没有解决办法,关键我还是要调用不是么

我的函数是
getimage(&img, "c:\\1.bmp")

如果按你做,我就变成
getimage(&img, "filename")
这不是一样不行的么
倒不如说只有sprintf才能这么用
[/Quote]
你对字符串常量和指针概念模糊,
"filename"→filename
riliu85 2010-07-26
  • 打赏
  • 举报
回复
谢谢3L
不过这样没有解决办法,关键我还是要调用不是么

我的函数是
getimage(&img, "c:\\1.bmp")

如果按你做,我就变成
getimage(&img, "filename")
这不是一样不行的么
倒不如说只有sprintf才能这么用
zhangweiit 2010-07-26
  • 打赏
  • 举报
回复
在c,c++中,字符是不能简单+的
要用strcat,有点麻烦
加载更多回复(2)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧