簡體   English   中英

指針和字符串的關系

[英]Pointers and Strings relation

我試圖通過反復試驗來理解指針和字符串之間的關系,我試圖運行這個程序,但是它沒有錯誤,但是當我輸入文件時

char *file_name;

printf("Enter the name of the file:");
gets(file_name);

printf("the file name is: %s",file_name);

指針

char *file_name;

未初始化並且具有不確定的值。 所以下面的說法

gets(file_name);

調用未定義的行為。

此外,函數gets不是標准的C 函數,它是不安全的。

您需要做的是分配一塊內存,您將在其中讀取文件名並使用標准 C 函數fgets而不是 get。

例如

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//…

size_t n = 100;
char *file_name = malloc( n );

fgets( file_name, n, stdin );

file_name[ strcspn( file_name, "\n" ) ] = '\0';

printf("the file name is: %s\n",file_name);

//…

free( file_name );

//...

這個說法

file_name[ strcspn( file_name, "\n" ) ] = '\0';

需要排除可以由函數fgets附加到輸入字符串的換行符'\\n'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM