这里有点新C,但这就是我正在做的事情。
void do_something(char* str){
char *new = str[0]+1;
printf("%s%s\n", *str, new);
}
int main(){
char input[2];
printf("Enter a two character string: \n");
scanf("%s", input);
do_something(&input);
}
这是do_something()
do_something("aa")
.
.
.
aaba
基本上在do_something()
我想要打印取消引用的输入参数str
,然后打印参数的修改版本,其中第一个字符使用ascii递增1。
我不确定我是否将正确的输入传递到main()
函数内的函数中。
任何帮助都将不胜感激。
答案 0 :(得分:2)
我不确定我是否将正确的输入传递到main()函数内的函数中。
不,那是不正确的。
do_something(&input);
//不正确,因为输入已经是字符串
您应该将参数传递为
do_something(input);
此声明看起来真的令人不安,而不是你想要的:
char input[2]; // this can only hold 1 char (and the other for NUL character)
你应该有更大的缓冲区,并且也为NUL字符分配,比如
char input[100] = ""; // can hold upto 99 chars, leaving 1 space for NUL
基本上在do_something()中我想打印取消引用的输入参数str,然后打印参数的修改版本,其中第一个字符使用ascii递增1。
你可以直接修改函数do_something
内的字符串(并且不需要在其中创建另一个指针 - atm它是完全错误的)
void do_something(char* str){
// char *new = str[0]+1; // <-- remove this
str[0] += 1; // <-- can change the string passed from `main` directly here
printf("%s\n", str);
}
答案 1 :(得分:0)
试试这个:
SELECT DISTINCT Value FROM TABLE ORDER BY Value Desc