C 如何将字符串的一半添加到旧字符串中?

C 如何将字符串的一半添加到旧字符串中?,c,C,假设我有一个 字符串[20] 如果我想使用fscanf从文件中读取字符串,并且由于如果我使用fscanf(),第一个字符将始终被跳过 然后我将执行以下类似操作: string[0] = x //where x is the char from fgetc(); 然后我将调用fscanf,它将填充剩余的字符串[1-19]。例如,我如何在不使用stringcat的情况下归档它 我试过类似的东西 *string++;// but this give me a left operand error

假设我有一个 字符串[20]

如果我想使用fscanf从文件中读取字符串,并且由于如果我使用fscanf(),第一个字符将始终被跳过

然后我将执行以下类似操作:

string[0] = x //where x is the char from fgetc();
然后我将调用fscanf,它将填充剩余的字符串[1-19]。例如,我如何在不使用stringcat的情况下归档它

我试过类似的东西

*string++;// but this give me a left operand error
例如:

输入:

您好123 1.2'\n' 再见1240.02

代码:


如果要将
fscanf()
读取的字符串从数组的元素1开始,则可以使用以下代码:

fscanf(file2, "%18s", string+1);
string
是数组对象而不是指针,因此无法使用操作
string++
对于数组对象。因为这相当于:

string = string + 1;
这里,您将为数组对象指定一个新值,这在C中是不允许的


要从元素1访问字符串数组,可以使用
string+1
(不将其分配给字符串数组)
string+1
返回指向
string
数组的元素1的指针

为什么会跳过第一个字符?fscanf仅读取下一个字符,不是吗?不正确<代码>man fscanf和
man printf
。或者读K&R。如果我读while((y=fgetc(file))!=EOF){fscanf()},那么它将只从第二个字符开始读取,但为什么要这样做呢?
string = string + 1;